echo $begrüßung;
wenn nach dem submit ein php-script aufgerufen wird, lässt du erstmal alle felder überprüfen. z.B. für "telefon". es gibt nach
import_request_variables("P");
automatisch für jedes <input> feld eine $variable, die den name trägt des jew. feldes.
Das sollte man besonders als Anfänger nicht tun. Nicht umsonst ist das Feature register_globals nicht mehr aktiv und ab PHP6 nicht mehr vorhanden. Es gelangen damit nämlich nicht nur die gewünschten Werte als Variablen ins Script sondern alle übertragenen. Wenn man es auch noch unterlässt Variablen vor der Erstverwendung explizit zu initialisieren, hat man schöne Sicherheitslücken.
import_request_variables("P") ist auch gar nicht notwendig, denn alle (per POST) übertragenen Werte stehen bereits im Array $_POST. Einträge in einem Array unterscheiden sich grundsätzlich nicht von "normalen" Variablen. Die Einträge im $_POST-Array können ohne weitere Maßnahmen sofort verwendet werden. Außerdem sieht man einem $_POST['telefon'] sofort seine Herkunft an, einem $telefon hingegen nicht.
Siehe beispiel telefon:
if ($telefon==0) {
Auf 0 zu prüfen wenn man eine Nicht-Eingabe (Leerstring) testen will ist nicht sehr sinnvoll. Auch dann nicht, wenn PHPs automatische Typkonvertierung diesen Vergleich zulässt. Besser ist es so:
if (empty($_POST['telefon']))
$error=1;
$telefon_msg="Bitte tragen Sie Ihre Telefonnummer ein!";
Ich nehme für solche Fälle ein Array, beispielsweise $error. Vor allen Prüfungen initialisiere ich es als leeres Array:
$error = array();
Wenn für ein Feld eine Meldung auszugeben ist, bekommt $error einen Eintrag
$error['telefon'] = 'fehlermeldungstext';
(Sollen mehrere Meldungen abgelegt werden können, kann man das in einem verschachtelten Array tun.)
}
if ($error)
Nach meiner Version:
if (!empty($error))
{
echo "<input type="text" name="telefon" id="telefon" accesskey="t" tabindex="7" onblur="formcheck()" value="$telefon" /><span style="color:#FF0000;" id="errTelefon">$telefon_msg</span>"
Und da hätten wir das Problem. Wenn angenommenerweise der Name die Prüfung nicht bestanden hat, das Telefon aber schon, wäre $error auch auf 1 gesetzt und $telefon_msg normalerweise nicht vorhanden. Mit register_globals oder import_request_variables() könnte man es aber per Parameterübergabe setzen und schon hast du ungewollten Inhalt in deiner Seite ausgegeben.
Meine $error-Array-Variante hingegen kann man neben der generellen Befragung mit empty() bei der Ausgabe befragen, ob sie einen Eintrag für Telefon oder Name oder ... enthält und das dann ausgeben.
echo '<input ... name="telefon"> ';
if (isset($error['telefon']))
echo $error['telefon'];
echo "$verabschiedung $name";