Formulaires PHP - Valider l'e-mail et l'URL
Ce chapitre montre comment valider les noms, les e-mails et les URL.
PHP - Valider le nom
Le code ci-dessous montre un moyen simple de vérifier si le champ du nom ne contient que des lettres, des tirets, des apostrophes et des espaces. Si la valeur du champ name n'est pas valide, enregistrez un message d'erreur :
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
La fonction preg_match() recherche un motif dans une chaîne, en retournant vrai si le motif existe, et faux sinon.
PHP - Valider l'e-mail
Le moyen le plus simple et le plus sûr de vérifier si une adresse e-mail est bien formée est d'utiliser la fonction PHP filter_var().
Dans le code ci-dessous, si l'adresse e-mail n'est pas bien formée, enregistrez un message d'erreur :
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
PHP - Valider l'URL
Le code ci-dessous montre un moyen de vérifier si la syntaxe d'une adresse URL est valide (cette expression régulière autorise également les tirets dans l'URL). Si la syntaxe de l'adresse URL n'est pas valide, enregistrez un message d'erreur :
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
PHP - Valider le nom, l'e-mail et l'URL
Maintenant, le script ressemble à ceci :
Exemple
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} 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.