PHP Formularvalidering - Obligatoriske felter

Dette afsnit viser, hvordan man laver obligatoriske inputfelter og opretter de fejlmeddelelser, der er nødvendige.

PHP - Inputfelter

Fra valideringsreglerne i det forrige afsnit kan vi se, at "Navn", "E-mail" og "Køn"-felterne er obligatoriske. Disse felter kan ikke være tomme og skal udfyldes i HTML-formen.

Felt Valideringsregler
Navn Obligatorisk. Det skal indeholde bogstaver og mellemrum.
E-mail Obligatorisk. Det skal indeholde en gyldig e-mailadresse (med @ og .).
Websted Valgfri. Hvis udfyldt, skal det indeholde en gyldig URL.
Kommentar Valgfri. Multilinje-inputfelt (tekstfelt).
Køn Obligatorisk. Der skal vælges en mulighed.

I det forrige afsnit var alle inputfelter valgfri.

I nedenstående kode tilføjer vi nogle nye variabler: $nameErr, $emailErr, $genderErr og $websiteErr. Disse fejlvariabler gemmer fejlmeddelelser for de anmodede felter. Vi tilføjer også en if else-sætning til hver $_POST-variabel. Denne sætning tjekker, om $_POST-variablen er tom (ved hjælp af PHP-funktionen empty()). Hvis den er tom, gemmes fejlmeddelelsen i forskellige fejlvariabler. Hvis den ikke er tom, sendes brugerens inputdata gennem test_input()-funktionen:

<?php}}
// Definer variabler og sæt dem til tomme værdier
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Navn er påkrævet";
  } else {
    $name = test_input($_POST["name"]);
  }
  if (empty($_POST["email"])) {
    $emailErr = "E-mail er påkrævet";
  } 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 = "Køn er påkrævet";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>

PHP - Vis fejlmeddelelser

I HTML-formularer tilføjer vi lidt script bag hvert anmodet felt. Hvis nødvendigt genereres passende fejlmeddelelser (hvis brugeren forsøger at sende formularen uden at udfylde obligatoriske felter):

Eksempel

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Navn: <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>
Køn:
<input type="radio" name="gender" value="female">Kvinde
<input type="radio" name="gender" value="male">Mand
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit"> 
</form>

Kør eksempel

Næste er validering af inputdata, dvs. 'Er 'Name'-feltet kun udelukkende bogstaver og mellemrum?', og 'Er 'E-mail'-feltet korrekt skrevet som en e-mailadresse?', og hvis 'Website'-feltet er udfyldt, 'Er dette felt en gyldig URL?'.