Hallo,
oft programmiert man Formular für Gästebücher oder Foren oder Kontaktmöglichkeiten auf Webseiten.
Aber haben die User überhaupt alle Felder ausgefüllt?
Steht der richtig Inhalt in den Input's?
Kein Problem, mit PHP kann man diese Angaben überprüfen.
Ich will in diesem Tutorial beschreiben, wie man genau Formuar Daten überprüfen kann.
Als erstes erstellen wir mal ein simples Formular:
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" name="test">
Name: <input type="text" name="user_name" size="55">
E-Mail: <input type="text" name="user_email" size="55">
Newsletter erhalten?: <input type="radio" name="newsletter" value="0"> Nein <input type="radio" name="newsletter" value="1"> Ja
<input type="submit" name="send" Value="senden">
</form>
Was ist bis jetzt passiert?
Ganz einfach wir haben ein kleines Formular eingerichtet wo der User seinen Namen, EMail Adresse verschicken kann und auswählen kann, ob er den Newsletter haben will.
Was bedeutet diese Zeile
echo $_SERVER['PHP_SELF']
Diese Zeile beudete, das der Sever das Formular an die gleiche Seite schicke, so braucht man keine zweite Seite einrichten sondern nur eine.
Unter das Formular machen wir folgendes:
Ich schreibe in den Code die erklärung für die einzelen Zeilen
//Gibt alle Fehler im Script aus
error_reporting(E_ALL);
//überprüfen ob das Formular abgeschcikt wurde:
if(isset($_POST['send']))
{
//vereinbaren von Variablen
//in $errors werden alle Fehler gespeichert und später ausgeben
$errors = array();
$name = $_POST['user_name'];
$email = $_POST['user_email'];
$newsletter = $_POST['newsletter'];
//überprüfung der Angaben
//Überprüfen ob ein Name angeben wurde
if($name == '') $errors = "Bitte geben Sie einen Namen an!";
//Überprüfen ob eine E-mail anegeben wurde
if($email == '') $errors = "Bitte geben Sie eine E-Mail Adresse an!";
//Überprüfen ob eine Antwort beim Newsletter gewählt wurde.
//Da wir ein netter Admin sind müssen die User einen Newsletter erhalten
if($newsletter == '0') $errors = "Damit Sie das Formular abschicken können müssen sie den Newsletter bestätigen, also Ja auswählen";
//Jetzt haben wir alles überprüft, jetzt die Ausgabe der Fehlermeldungen:
if (count($errors) == 0)
{
//Speichern in einer DB oder so....
}
else
{
//Ausgabe der Fehler in der Farbe ROT
echo "<span style=\"color:red;font-size:10px\"> Fehler bei folgenden Punkten:<ul>";
for ($i = 0; $i < count($errors); $i++){
echo "<li>".$errors[$i]."</li>";
}
echo "</ul></span>";
}
}
//Wir machen keinen else Zweig, denn wir brauchen ja keine Ausgabe machen,
//Wenn der User das Formular eh noch nicht abgeschickt hat.
So, diese Kontrolle kann man noch erweitern.
Aber die Überprüfung aller Input's sieht so aus wie oben.
Wünsche Viel Spaß beim Tüfteln
Bei Fragen, oder wenn ihr Fehler gefunden habt, meldet euch per PM.