Formulardaten nach Prüfung zurückschreiben
Frank
- php
Hallo Forum,
imArchiv steht eine Menge dazu, aber ich brauche es halt einfach:
Meine Formulardaten werden über $http_post_vars[] in der gleichen Seite bei submit geprüft. Bei Fehler sollen alle Daten wieder in das Formular geschrieben werden.
Frage: Wie spreche ich in PHP ein Formulafeld an <input ... name="xx"> an, um es mit $HTTP_POST_VARS[xx] zu füllen?
Ich kann es auch mit Javascript machen, wenn aber der Client JS deaktiviert hat, funktioniert das nicht.
Danke für die Hilfe
Frank
Hallo frank!
Frage: Wie spreche ich in PHP ein Formulafeld an <input ... name="xx"> an, um es mit $HTTP_POST_VARS[xx] zu füllen?
mit
<input type="text" name="xx" value="<?php echo $blabla?>">
geht es - über das Atribut VALUE kannst du Werte von Formularfelder vorbelegen..
hilft das ?
Gruß Sven
--
TMTOWTDI
Frage: Wie spreche ich in PHP ein Formulafeld an <input ... name="xx"> an, um es mit $HTTP_POST_VARS[xx] zu füllen?
Du wirst lachen, aber PHP kann garkein HTML. Was PHP aber wahnsinnig gut kann, ist Textausgabe.
Beleuchten wir dein Problem:
Am Anfang willst du folgenden Text (der zufällig wie HTML aussieht) im Browser stehen haben:
<input type="text" name="testfeld" value="" size="20">
Wenn das Formular falsch ausgefüllt wurde, willst du folgenden Text (der zufällig....aber lassen wir das) im Browser stehen haben:
<input type="text" name="testfeld" value="Die alte Eingabe" size="20">
Sieht verdammt ähnlich aus. Ist es auch. Der einzige Unterschied ist im Attribut "value", welches im ersten Fall keinen Text enthält, im zweiten Fall den Text, der bislang reingeschrieben wurde, und der variabel ist.
Idee: Wenn du als Value die PHP-Variable dort reinschreibst, dann wird beim ersten Aufruf des Formulars die Variable leer sein und deshalb "" erzeugen, wenn später das Formular abgeschickt wurde, aber falsch ist, wird dort der Wert des abgeschickten Formularfeldes drinstehen.
Folgende Möglichkeiten:
<input type="text" name="testfeld" value="<?= $testfeld ?>" size="20">
oder ausführlicher
<input type="text" name="testfeld" value="<?php echo $testfeld; ?>" size="20">
Funktioniert im Prinzip prima, weil beim Absenden der Wert des Formularfeldes "testfeld" in der Variablen "$testfeld" gespeichert wird.
Oder mit $HTTP_POST_VARS:
<input type="text" name="testfeld" value="<?php echo $HTTP_POST_VARS['testfeld']; ?>" size="20">
Mit beiden Methoden wird Text ausgegeben, der bei einem abgeschickten Formular dem Formularfeld den Inhalt gibt, andernfalls nur ein leeres Formularfeld erzeugt.
Ich hoffe, du hast das Prinzip verstanden. PHP erzeugt lediglich Text, der an den Browser gesendet wird. Es ist sich der Bedeutung des Textes nicht "bewußt", erkennt keine Formularfelder etc, sondern kann lediglich in Abhängigkeit von Bedingungen mal den einen Text an den Browser schicken, und mal den anderen.
- Sven Rautenberg
Hi Sven,
ich weiß, es ist Haarspalterei ;-)
Folgende Möglichkeiten:
<input type="text" name="testfeld" value="<?= $testfeld ?>" size="20">
^
Das Gleichheitszeichen muss da weg ;-)
Außerdem schreib ich immer
<input type="text" name="testfeld"<? if(!empty($testfeld)) echo " value="$testfeld"; ?> size="20">
Bye,
Peter
Moin
<input type="text" name="testfeld" value="<?= $testfeld ?>" size="20">
^
Das Gleichheitszeichen muss da weg ;-)
Nicht wirklich. Eigentlich sollte das ganze Konstrukt geändert werden :)
<?= ausdruck ?> ist eine Kurzform für <? echo ausdruck; ?> (http://www.php.net/manual/en/language.basic-syntax.php).
Ist also meist legal. Das hat aber 2 gravierende Nachteile:
1. es ist nicht wirklich portabel (short_tags müssen aktiviert sein) aber vor allem
2. damit reisst du dir unter Umständen riesige Sicherheitslücken der Klasse Cross Site Scripting auf, da Usereingaben ungefiltert wieder zurückgehen. Ein böser Bube könnte zum Beispiel JavaScript-Code (oder ein meta-Tag für refresh) einbetten und das würde vom Browser ausgeführt werden.
Die korrektere Form wäre also:
<?php echo htmlentities($testfeld); ?>
a) läuft auf jeder PHP-Installation
b) verhindert CSS-Angriffe
c) Wenn ein User auf die Idee kommen sollte ein " in das Formularfeld zu schreiben, fliegt ihm das Formular nicht gleich um die Ohren.
--
Henryk Plötz
Grüße aus Berlin