6.Le langage PHP
6.11.Validation de formulaire
6.11.1.Introduction
Nous avons vu précédemment comment récupérer, en PHP, les valeurs saisies dans un formulaire HTML
[c'est quoi?]
[comment?]
. Les données ainsi récupérées pourront servir à envoyer un mail
[comment?]
à l'administrateur du site, stocker des informations sur un membre du site, etc. mais dans tous les cas, les données saisies devront être validées (contrôle des champs obligatoires, longueur max, validité des dates, etc.) avant toute autre opération (y compris s'il y a un contrôle effectué - coté client- en javascript
[comment?]
).
L'objet de ce chapitre est donc de présenter le principe de fonctionnement d'une telle validation.
Nous allons travailler, sur l'exemple d'un simple formulaire d'enregistrement d'un nouveau membre.
L'utilisateur devra saisir son nom (champ obligatoire limité à 64 caractères), son prénom (champ optionnel limité à 64 caractères), sa date de naissance (obligatoire), son email et son mot de passe (2 fois pour contrôle).
<body style="font-size:12pt"> <form> Nom: <input type="text" name="nom" /><br /> Prenom: <input type="text" name="prenom" /><br /> Date de naissance (JJ/MM/AAAA): <input type="text" size="10" maxlength="10" name="naissance" /><br /> Email: <input type="text" name="email" /><br /> Mot de passe: <input type="password" name="motdepasse" /><br /> Mot de passe (verif): <input type="password" name="motdepasseverif" /><br /> <input type="submit" value="Enregistrer" /> </form> </body> |
6.11.2.Structure
Pour intégrer la validation du formulaire, nous allons:
Ce qui donne la structure suivante
|
|
<?php
// Tableau contenant les messages d'erreur lies a la validation de chaque // champ du formulaire. // On utilisera le nom du champ comme cle du tableau $errs = array(); // S'il s'agit du premier affichage, le bouton submit n'a pas ete presse // il n'y a pas de validation a effectuer. Sinon $_POST["submit"] n'est pas // vide (et contient la valeur "Enregistrer") if (strlen($_POST["submit"]) > 0) { // Inserer validation du nom: stripSlashes($_POST["nom"]) // ajouter $errs["nom"][] = "Erreur blabla" en cas d'erreur de validation // Inserer validation du prenom: stripSlashes($_POST["prenom"]) // ajouter $errs["prenom"][] = "Erreur blabla" en cas d'erreur de validation // etc. // Pour demo, nous allons simuler une erreur $errs["form"][] = "La validation du formulaire n'est pas implementee."; if (count($errs) == 0) { // Les donnees du formulaires ont ete validee (pas d'erreur trouvee) // faire ce qui doit etre fait (envoi de mail, enregistrement en base) // et rediriger vers la page suivante // header("Location: pagesuivante.php"); die(); } } ?> <body style="font-size:12pt"> <?php // Si des erreurs ont été trouvée, les afficher sous forme de liste if (count($errs) > 0) { echo "<ul>"; foreach ($errs as $champEnErreur => $erreursDuChamp) { foreach ($erreursDuChamp as $erreur) { echo "<li>".$erreur."</li>"; } } echo "</ul>"; } ?> <form method="post"> Nom: <input type="text" name="nom" /><br /> Prenom: <input type="text" name="prenom" /><br /> Date de naissance (JJ/MM/AAAA): <input type="text" size="10" maxlength="10" name="naissance" /><br /> Email: <input type="text" name="email" /><br /> Mot de passe: <input type="password" name="motdepasse" /><br /> Mot de passe (verif): <input type="password" name="motdepasseverif" /><br /> <input type="submit" name="submit" value="Enregistrer" /> </form> </body> |



/formulaire_validation/enregistrement_membre_structure.php
