Validation des formulaires PHP - Champs obligatoires

Cette section montre comment créer des champs d'entrée obligatoires et créer les messages d'erreur nécessaires.

Champs d'entrée PHP

À partir des règles de validation de la section précédente, nous voyons que les champs "Nom", "E-mail" et "Sexe" sont obligatoires. Ces champs ne peuvent pas être vides et doivent être remplis dans le formulaire HTML.

Champ Règles de validation
Nom Obligatoire. Il doit contenir des lettres et des espaces.
E-mail Obligatoire. Il doit contenir une adresse e-mail valide (contenant @ et .).
Site web Optionnel. Si vous le remplissez, il doit contenir une URL valide.
Commentaire Optionnel. Champ d'entrée en multiples lignes (zone de texte).
Sexe Obligatoire. Vous devez choisir une option.

Dans la section précédente, tous les champs d'entrée étaient optionnels.

Dans le code suivant, nous avons ajouté quelques nouvelles variables : $nameErr, $emailErr, $genderErr et $websiteErr. Ces variables d'erreur enregistrent les messages d'erreur des champs demandés. Nous avons également ajouté une instruction if else pour chaque variable $_POST. Cette instruction vérifie si la variable $_POST est vide (à l'aide de la fonction PHP empty()). Si elle est vide, le message d'erreur est stocké dans une variable d'erreur différente. Si elle n'est pas vide, les données d'entrée de l'utilisateur sont envoyées via la fonction test_input() :

<?php}}
// Définir les variables et les configurer à des valeurs vides
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Le nom est obligatoire";
  } else {
    $name = test_input($_POST["name"]);
  }
  if (empty($_POST["email"])) {
    $emailErr = "L'email est obligatoire";
  } 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 = "Le sexe est obligatoire";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>

PHP - Affichage des messages d'erreur

Dans les formulaires HTML, nous ajoutons un peu de script après chaque champ demandé. Si nécessaire, des messages d'erreur appropriés sont générés (si l'utilisateur tente de soumettre le formulaire sans remplir les champs obligatoires) :

Exemple

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Nom : <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>
Site Web :
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
<label>Commentaire : <textarea name="comment" rows="5" cols="40"></textarea></label>
<br><br>
Sexe :
<input type="radio" name="gender" value="female">Femme
<input type="radio" name="gender" value="male">Homme
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Soumettre"> 
</form>

Exemple de exécution

Nous vérifions ensuite les données d'entrée, à savoir : "Le champ 'Nom' contient-il uniquement des lettres et des espaces ?", et "Le champ 'E-mail' contient-il une syntaxe de adresse e-mail valide ?", et si le champ 'Site Web' est rempli, 'Ce champ contient-il une URL valide ?".