Chapitre 18 : Filtres et validation
Apprenez à sécuriser vos applications PHP avec ce guide complet sur la validation et le filtrage des données utilisateur.
1. Introduction
Lorsque vous récupérez des données depuis un formulaire ou une URL, il est crucial de les valider et de les nettoyer avant de les utiliser. PHP propose des fonctions puissantes via l'extension filter.
2. Nettoyage vs Validation
- Nettoyer = supprimer les caractères indésirables
- Valider = vérifier qu'une donnée respecte un format
Les deux peuvent être effectués avec filter_var().
3. Nettoyer une chaîne
Supprimer les balises HTML ou les espaces :
<?php
$nom = "<b>Sami</b>";
$nettoye = filter_var($nom, FILTER_SANITIZE_STRING);
echo $nettoye; // Affiche : Sami
?>
$nom = "<b>Sami</b>";
$nettoye = filter_var($nom, FILTER_SANITIZE_STRING);
echo $nettoye; // Affiche : Sami
?>
Note : Depuis PHP 8.1, ce filtre est obsolète. Utilisez
strip_tags() ou htmlspecialchars() à la place.
4. Valider un email
<?php
$email = "test@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Email valide";
} else {
echo "Email invalide";
}
?>
$email = "test@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Email valide";
} else {
echo "Email invalide";
}
?>
5. Valider un entier ou un nombre
<?php
$age = "25";
if (filter_var($age, FILTER_VALIDATE_INT)) {
echo "C'est un entier";
}
?>
$age = "25";
if (filter_var($age, FILTER_VALIDATE_INT)) {
echo "C'est un entier";
}
?>
Pour un nombre à virgule :
filter_var($valeur, FILTER_VALIDATE_FLOAT)
6. Valider une URL
<?php
$url = "https://monsite.com";
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo "URL valide";
}
?>
$url = "https://monsite.com";
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo "URL valide";
}
?>
7. Valider avec une plage de valeurs
<?php
$note = 14;
$options = ["options" => ["min_range" => 0, "max_range" => 20]];
if (filter_var($note, FILTER_VALIDATE_INT, $options)) {
echo "Note correcte";
}
?>
$note = 14;
$options = ["options" => ["min_range" => 0, "max_range" => 20]];
if (filter_var($note, FILTER_VALIDATE_INT, $options)) {
echo "Note correcte";
}
?>
8. Filtrer un tableau de données
Pour valider plusieurs champs simultanément :
<?php
$data = [
"email" => "user@mail.com",
"age" => "30"
];
$filtre = [
"email" => FILTER_VALIDATE_EMAIL,
"age" => [
"filter" => FILTER_VALIDATE_INT,
"options" => ["min_range" => 0, "max_range" => 120]
]
];
$resultat = filter_var_array($data, $filtre);
print_r($resultat);
?>
$data = [
"email" => "user@mail.com",
"age" => "30"
];
$filtre = [
"email" => FILTER_VALIDATE_EMAIL,
"age" => [
"filter" => FILTER_VALIDATE_INT,
"options" => ["min_range" => 0, "max_range" => 120]
]
];
$resultat = filter_var_array($data, $filtre);
print_r($resultat);
?>
9. Fonctions complémentaires
htmlspecialchars(): empêche le HTML malveillantstrip_tags(): supprime toutes les balises HTMLtrim(): supprime les espaces inutiles
10. À retenir
filter_var()permet de valider ou nettoyer une donnée- Privilégier la validation pour tous les champs utilisateurs
- Utiliser
filter_var_array()pour les formulaires complets - Renforcer la sécurité avec
htmlspecialchars()etstrip_tags()
11. Exercices proposés
- Créer un formulaire avec champ email, et valider l'email côté PHP.
- Créer un champ pour âge, et le valider comme entier entre 1 et 120.
- Créer une fonction qui nettoie une chaîne et empêche le HTML malicieux.
12. Ce que vous apprendrez ensuite
Dans le chapitre 19, vous apprendrez à gérer les erreurs en PHP : détection, traitement, affichage personnalisé, exceptions, et bonnes pratiques pour déboguer efficacement.