PHP Formulaires - Valider l'e-mail et l'URL
Ce chapitre explique comment valider les noms, les e-mails et les URL.
PHP - Valider le nom
Le code ci-dessous montre une méthode simple pour vérifier si le champ du nom ne contient que des lettres, des tirets, des apostrophes et des espaces. Si la valeur du champ du nom n'est pas valide, un message d'erreur sera stocké :
$name = test_input($_POST["name"]); if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) { $nameErr = "Seules les lettres et les espaces sont autorisés"; } La fonction preg_match() recherche une chaîne pour un motif, retournant vrai si le motif existe, et faux sinon.
PHP - Valider l'e-mail
La manière la plus simple et la plus sûre de vérifier si une adresse e-mail est bien formée est d'utiliser la fonction filter_var() de PHP.
Dans le code ci-dessous, si l'adresse e-mail n'est pas bien formée, un message d'erreur sera stocké :
$email = test_input($_POST["email"]); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Format d'e-mail invalide"; } PHP - Valider l'URL
Le code ci-dessous montre comment vérifier si la syntaxe d'une adresse URL est valide (cette expression régulière permet également des tirets dans l'URL). Si la syntaxe de l'adresse URL n'est pas valide, un message d'erreur sera stocké :
$website = test_input($_POST["website"]); if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { $websiteErr = "URL invalide"; } PHP - Valider le nom, l'e-mail et l'URL
Maintenant, le script ressemble à ceci :
Exemple
// définir des variables et les initialiser à 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 requis"; } else { $name = test_input($_POST["name"]); // vérifier si le nom ne contient que des lettres et des espaces if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) { $nameErr = "Seules les lettres et les espaces sont autorisés"; } } if (empty($_POST["email"])) { $emailErr = "L'e-mail est requis"; } else { $email = test_input($_POST["email"]); // vérifier si l'adresse e-mail est bien formée if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Format d'e-mail invalide"; } } if (empty($_POST["website"])) { $website = ""; } else { $website = test_input($_POST["website"]); // vérifier si la syntaxe de l'adresse URL est valide (cette expression régulière permet également des tirets dans l'URL) if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { $websiteErr = "URL invalide"; } } if (empty($_POST["comment"])) { $comment = ""; } else { $comment = test_input($_POST["comment"]); } if (empty($_POST["gender"])) { $genderErr = "Le genre est requis"; } else { $gender = test_input($_POST["gender"]); } } L'étape suivante consiste à montrer comment empêcher le formulaire de vider tous les champs de saisie lorsque l'utilisateur soumet le formulaire.