PHP-Variable an HTML-Element übergeben
nichtschecker
- php
Hallo,
kann mir jemand sagen wie ich eine PHP-Variable an ein
Html-Element weitergeb?
So sieht das Script aus!
<html>
<head>
<title>Index.html</title>
</head>
<body>
<form action="auswertung.php" method="post">
<input type="text" name="lalala" value="1"><br>
<input type="submit" value="Los!">
</form>
</body>
</html>
--
<html>
<head>
<title>Auswertung.php</title>
</head>
<body>
<input type="text" name="lala" value="$lalala">
</body>
</html>
--
Wenn man auf Index.html im Feld 50 eingibt und Los! klickt,
dann soll Auswertung.php aufgerufen werden und im Input-Feld
dann 50 stehen!
Geht das???
Hi,
dein Ansatz war schon richtig, nur leider nicht mehr mit den aktuellen PHP-Einstellungen kompatibel. Aus Sicherheitsgründen erzeugen externe Parameter nicht mehr automatisch PHP-Variablen - d.h.: Du musst in deinem Skript erst wieder sagen, was $lalala eigentlich enthalten soll, dazu gibt es die Superglobals $_GET, $_POST (bzw. $_REQUEST).
$lalala = $_POST['lalala'];
Das sollte eigentlich reichen.
MfG
Rouven
auswertung.php:
<html>
<head>
<title>Auswertung.php</title>
</head>
<body>
<input type="text" name="lala" value="<?php echo $lalala; ?>">
</body>
</html>
Hallo,
[Formular]
<form action="auswertung.php" method="post">
<input type="text" name="lalala" value="1"><br>
<input type="submit" value="Los!">
</form>[Skript]
<input type="text" name="lala" value="$lalala">
Wenn man auf Index.html im Feld 50 eingibt und Los! klickt,
dann soll Auswertung.php aufgerufen werden und im Input-Feld
dann 50 stehen!
Das "spezielle" bei PHP ist ja, dass man (wenn man will)
beliebig abwechseln kann zwischen
<input type="text" name="lala" value="$lalala">
ist (aus der Sicht von PHP) ein Bereich mit HTML-Code,
deshalb passiert nichts, der HTML-Code wird so, wie
er ist, an den Browser ausgeliefert, und dort steht dann
im Input-Feld einfach "$lalala"
Du musst also in den PHP-Modus wechseln.
Entweder - wie im Beispiel von Kosmos - nur gerade an
der Stelle, wo Du die Variable einfuegen willst,
oder aber - was ich uebersichtlicher finde - fuer die ganze Zeile:
<?php echo "<input type='text' name='lala' value='$_POST[lalala]>"; ?>
oder
<?php echo '<input type="text" name="lala" value="'.$_POST['lalala'].'">'; ?>
Nur bei veralteten, unsicheren Server-Einstellungen (register_globals="off")
kannst Du im Skript direkt auf $lalala zugreifen.
Du solltest besser auf $_POST['lalala'] oder $_REQUEST['lalala'] zugreifen.
Das wird auch in Zukunft funktionieren und ist sicherer/uebersichtlicher,
weil Du dann der Variable ansiehst, wo sie herkommt, naemlich von
der "boesen" Aussenwelt.
Lies mal:
dclp-FAQ:
Variablen und Formulare
http://www.dclp-faq.de/ch/ch-webvariablen.html
Sicheres Programmieren in PHP
http://www.dclp-faq.de/ch/ch-security.html
Von HTML zu PHP: Schreibe Formularverarbeitungen in Normalform
http://www.dclp-faq.de/q/q-stil-normalform.html
PHP-Manual: Strings, Einfache und doppelte Anfuehrungszeichen, HEREDOC-Syntax,
http://www.php.net/manual/en/language.types.string.php
Abschnitt davon:
Variablen-Analyse (parsing) in Strings:
http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing
dclp-FAQ: Anführungzeichen oder Hochkomma?
http://www.dclp-faq.de/q/q-stil-anfuehrungszeichen.html
PHP-Manual: Predefined Variables (englisch, die deutsche Uebersetzung
ist unvollstaendig/veraltet)
http://www.php.net/manual/en/language.variables.predefined.php und
http://www.php.net/manual/en/reserved.variables.php
Gruesse,
Thomas
Hello,
<?php echo "<input type='text' name='lala' value='$_POST[lalala]>"; ?>
besser:
<?php echo "<input type="text" name="lala" value="".$_POST["lalala"].">"; ?>
XHTML möchte doppelte Häkchen und PHP möchte den Index im Array auch als String in Häkchen sehen...
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
XHTML möchte doppelte Häkchen
Wie kommst Du darauf? URL please!
und PHP möchte den Index im Array auch als String in Häkchen sehen...
Aber nicht, wenn das ganze zwischen doppelten Anfuehrungszeichen steht...
http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.simple
Korrekt: echo "Blabla $foo[bar] Blabla";
Korrekt: echo "Blabla {$foo['bar']} Blabla";
Falsch: echo "Blabla $foo['bar'] Blabla";
Gruesse,
Thomas
Hello,
Hallo Tom,
XHTML möchte doppelte Häkchen
Wie kommst Du darauf? URL please!
Da gab es neulich hier einen Thread, der auf die passende Stelle verwies und ich habe mir leider nur gemerkt, dass definitiv doppelte Anführungszeichen festgelegt wurden. Ich muss also selber erst wieder suchen danach.
Außerdem steht es auch irgendwo in Self, gültig für HTML ab 4.x ??
Ich habe das leider auch vergessen. Man wird alt.
http://selfhtml.teamone.de/html/allgemein/textauszeichnung.htm#attribute
So, das habe ich gefunden. Und irgendwer hatte dann auch noch die Stelle zitiert, die doppelte Häkchen vorschrieb...
Wäre nett, wenn Du mir auch noch eine Rückmeldung geben könntest, wenn Du selber fündig wirst, ggf. auch mit gegenteiliger Aussage.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
Danke, dass Du doch noch geantwortet hast. ;-)
[Deine Behauptung: In XHTML muessten Attributwerte in doppelten
Anfuehrungszeichen stehen]
Außerdem steht es auch irgendwo in Self, gültig für HTML ab 4.x ??
http://selfhtml.teamone.de/html/allgemein/textauszeichnung.htm#attribute
Dort ist nur die Rede von "Anfuehrungszeichen".
Und irgendwer hatte dann auch noch die Stelle zitiert, die doppelte Häkchen vorschrieb...
Das kann hoechstens fuer irgendein extrem modernes XHTML gelten,
das ich noch nicht kenne.
Fuer HTML 4.01 gilt:
"http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.2
By default, SGML requires that all attribute values be delimited
using either double quotation marks (ASCII decimal 34)
or single quotation marks (ASCII decimal 39).
Single quote marks can be included within the attribute value
when the value is delimited by double quote marks, and vice versa."
(Etwas weiter unten stehen dann die paar wenigen Ausnahmen,
wo in HTML 4 kein Anfuehrungszeichen notwendig ist.)
In den Unterschieden von HTML 4.01 zu XHTML 1.0
http://www.w3.org/TR/xhtml1/#diffs
fand ich nichts zum Thema "doppelte/einfache Anfuehrungszeichen".
Ich gehe deshalb davon aus, dass obiges dort unveraendert gilt.
Das einzige, was in XHTML anders ist: Es muessen _alle_
Attributswerte in Anfuehrungszeichen stehen.
http://www.w3.org/TR/xhtml1/#h-4.4
In der Zusammenfassung der Unterschiede zwischen
XHTML 1.0 Strict und XHTML 1.1 steht nichts von Anfuehrungszeichen:
http://www.w3.org/TR/xhtml11/changes.html#a_changes
Gewisse Leute interpretieren den Abschnitt zu AttValue
aus der XML-1.0-Recommendation (Second Edition)
http://www.w3.org/TR/REC-xml#NT-AttValue
so, dass auch in XML beide Anfuehrungszeichen
bei Attributen erlaubt seien.
(Ich verstehe diesen Text nicht restlos... ;-)
Ich bin deshalb ueberzeugt, dass in XHTML 1.0 und 1.1
Attributswerte mit doppelten oder einfachen
Anfuehrungszeichen eingepackt werden duerfen.
Diese Auffassung teile ich mit vielen andern, z.B.
http://www.fincher.org/tips/web/xhtml.shtml
http://catcode.com/cit041j/to_xhtml.html
http://www.juicystudio.com/tutorial/xhtml/attributes.asp
http://zero-soul.panicus.org/xhtml/xhtml-attributes.php
http://lists.w3.org/Archives/Public/www-html-editor/2002JulSep/0001.html
http://lists.w3.org/Archives/Public/www-html-editor/2001AprJun/0473.html
http://mail.python.org/pipermail/python-list/2003-July/173248.html
Es gibt aber auch ein paar Leute, die dasselbe behaupten wie Du:
http://www.devarticles.com/c/a/HTML/XHTML-Explained/1/
http://builder.com.com/5100-6371-1044630.html
http://academ.hvcc.edu/~kantopet/xhtml/index.php?page=xhtml+attributes
Bis ich aber eine _offizielle_ Quelle sehe, welche die doppelten
Anfuehrungszeichen vorschreibt, halte ich das fuer ein Geruecht.
---
Alternativ akzeptiere ich auch eine XHTML-Testseite, bei welcher
der offizielle Validator die einfachen Anfuehrungszeichen
"anmeckert".
Als "Beweis" fuer meine Meinung kannst Du ja mal das
Validator-Resultat einer Seite in XHTML 1.0 Transitional
anschauen, wo ich sehr viele Attribute in einfachen
Anfuehrungszeichen habe (warum wohl?;-):
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.tiptom.ch%2Fhomepage%2F&ss=1&verbose=1
(dort dann runterscrollen fuer den Quelltext)
---
Das einzige einigermassen stichhaltige Argument gegen
einfache Anfuehrungszeichen waere IMHO das Geruecht,
dass gewisse alte Browser damit nicht klarkommen.
Solche Geruechte sind mir aber egal.
Browser schlucken auch Attribute ohne Anfuehrungszeichen
klaglos, selbst wenn sie vorgeschrieben waeren, da kann
ich nicht glauben, dass sie mit einfachen Anfuehrungszeichen
nicht klarkommen sollten...
Gruesse,
Thomas
Hello Thomas,
Uiuiui...
Da habe ich aber mindestens den ganzen Vormiattag von 06:00 bis 09:00 zu lesen...
Muss ja schließlich auch unsere hauseigenen Statuten auf soliden Grundmauern bauen.
Danke für die Mühe
Liebe Grüße aus http://www.braunschweig.de
Tom