Lieber Simon,
if (@$_POST['gesendet']) {
nicht gut. Besser so:
if (isset($_POST['gesendet']))
$vorname = @$_POST['vorname'];
Nicht gut. Besser:
$nachname = isset($_POST['nachname']) ? $_POST['nachname'] : '';
Ich habe allerdings noch nicht geprüft, ob auch folgende Zeile ohne Fehlermeldung gelingt:
$nachname = $_POST['nachname'] || '';
Jedenfalls verhindert vielleicht das '@' eine Fehlermeldung sowohl auf der Seite, als auch im Fehler-Log, jedoch hilft Dir das in dem Moment nicht weiter, wo Du beim Debugging diese wertvollen Fehlermeldungen bräuchtest! Daher ist es immer besser, wenn Dein Code erst garkeine Fehlermeldungen provoziert, damit Du deren Erzeugung auch nicht unterdrücken musst.
$gueltig = verifiziereAlphaNum ($vorname);
if (!$gueltig) {
$fehler_nachricht[]="Vorname darf nur aus Buchstaben, Zahlen, Leerzeichen, Bindestrichen und ' bestehen.";
}
Warum nicht kürzer?
if ( !verifiziereAlphaNum($vorname) )
$fehler_nachricht[] = ".......";
Um nun Dein Hauptanliegen zu behandeln:
<input name="vorname" type="text" size="20" id="vorname" value="<?php echo $vorname ?>" />
Das wird sehr gerne gemacht, ist aber aus meiner Sicht nicht sinnvoll. Du mischst hier PHP-Code (also Programmlogik) mit HTML-Code (also Auszeichnungs-Logik). Dadurch entsteht eine Vermischung von Programm-Logik und Ausgabe-Code. Auch wenn das mit PHP möglich ist, so ist es doch nicht immer sinnvoll.
Suche einmal danach, was ich hier im Forum bereits zum Thema "Affenformular" geschrieben habe. Dort beschreibe ich auch den Umgang mit einer Vorlage (neudeutsch: Template). Das sollte Dir weiterhelfen!
Ähm... die Forumssuche ist gerade nicht verfügbar. Ich habe Dir den Archivthread deshalb mal eben herausgesucht.
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)