PHP Formularvalidierung - Obligatorische Felder

Dieser Abschnitt zeigt, wie man obligatorische Eingabefelder erstellt und die Fehlermeldungen erstellt, die bei Bedarf verwendet werden.

PHP - Eingabefeld

Aus den Überprüfungsrulen im vorherigen Abschnitt sehen wir, dass die Felder "Name", "E-Mail" und "Geschlecht" erforderlich sind. Diese Felder dürfen nicht leer sein und müssen in HTML-Formularen ausgefüllt werden.

Feld Überprüfungsrulen
Name Erforderlich. Muss Buchstaben und Leerzeichen enthalten.
E-Mail Erforderlich. Muss eine gültige E-Mail-Adresse enthalten (inklusive @ und .).
Website Optional. Wenn ausgefüllt, muss eine gültige URL enthalten.
Kommentar Optional. Mehrzeiliges Eingabefeld (Textfeld).
Geschlecht Erforderlich. Eine Auswahl muss getroffen werden.

Im vorherigen Abschnitt waren alle Eingabefelder optional.

Im folgenden Code haben wir einige neue Variablen hinzugefügt: $nameErr, $emailErr, $genderErr und $websiteErr. Diese Fehlervariablen speichern die Fehlermeldungen der angeforderten Felder. Wir haben auch jedem $_POST-Variablen ein if-else-Statement hinzugefügt. Dieses Statement überprüft, ob das $_POST-Variablen leer ist (durch die PHP-Funktion empty()). Wenn es leer ist, wird die Fehlermeldung in einer anderen Fehlervariable gespeichert. Wenn es nicht leer ist, wird die Benutzerinputdaten durch die Funktion test_input() gesendet:

<?php}}
// Variablen definieren und auf leer setzen
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name ist erforderlich";
  } else {
    $name = test_input($_POST["name"]);
  }
  if (empty($_POST["email"])) {
    $emailErr = "E-Mail ist erforderlich";
  } else {
    $email = test_input($_POST["email"]);
  }
  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
  }
  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }
  if (empty($_POST["gender"])) {
    $genderErr = "Das Geschlecht ist erforderlich";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>

PHP - Fehlermeldungen anzeigen

In HTML-Formularen fügen wir nach jedem angeforderten Feld ein kleines Skript hinzu. Wenn erforderlich, werden angemessene Fehlermeldungen generiert (wenn der Benutzer versucht, das Formular ohne Ausfüllen obligatorischer Felder zu submiten):

Beispiel

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-Mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
<label>Kommentar: <textarea name="comment" rows="5" cols="40"></textarea></label>
<br><br>
Geschlecht:
<input type="radio" name="gender" value="female">Weiblich
<input type="radio" name="gender" value="male">Männlich
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit"> 
</form>

Laufender Beispiel

Dazu gehören die Validierung der Eingabedaten, d.h. „Ist das Name-Feld nur aus Buchstaben und Leerzeichen besteht?“ sowie „Ist das E-Mail-Feld eine gültige E-Mail-Adresse?“ und falls das Website-Feld ausgefüllt wurde, „Enthält dieses Feld eine gültige URL?“.