Objectifs
- Connaitre les fonctions de filtrage PHP
- Apprendre à nettoyer et à valider les entrées utilisateur en PHP.
Présentation des fonctions de filtrage et de nettoyage en PHP
- Les vérifications dans les formulaires HTML5 et en JavaScript sont valables uniquement côté client. Pour des raisons de sécurité, il faut réeffectuer complètement toutes les vérifications côté serveur. PHP met pour cela à la disposition des programmeurs tout un ensemble de filtres.
- Le nettoyage et la validation des entrées utilisateur sont l'une des tâches les plus courantes dans une application Web. Pour faciliter cette tâche, PHP fournit une extension de filtre native que vous pouvez utiliser pour nettoyer ou valider des données telles que des adresses e-mail, des URL, des adresses IP, etc.
- En PHP, les filtres jouent un rôle important pour valider et filtrer les données provenant de sources non sécurisées, comme l'entrée de l'utilisateur, etc.
- Tester, valider et filtrer les entrées utilisateur ou les données personnalisées est une partie importante de toute application Web.
- L'extension de filtre PHP est conçue pour rendre le filtrage des données plus facile et plus rapide.
- En utilisant des filtres, vous pouvez être sûr que l'application obtient la bonne entrée.
- Le filtrage d'entrée est l'un des problèmes de sécurité des applications les plus importants.
- Il existe principalement deux types de filtres qui sont listés ci-dessous :
- Les filtres de validation: sert à valider ou vérifier si les données répondent ou non à certaines qualifications. Par exemple, passer FILTER_VALIDATE_URL déterminera si les données sont une URL valide, mais cela ne changera pas les données existantes par elles-mêmes.
- Les filtres de nettoyage: contrairement à la validation, l'assainissement aseptise les données afin de s'assurer qu'il n'y a pas de caractères indésirables en supprimant ou en modifiant les données. Par exemple, passer FILTER_SANITIZE_EMAIL supprimera tous les caractères inappropriés pour une adresse e-mail. Cela dit, cela ne valide pas les données.
Toutes les données récupérables sont à valider, qu'elles proviennent de formulaire ou d'URL ($_GET _ $_POST). Il ne faut pas faire confiance aux utilisateurs (mauvaise manipulation, pirate…) et vous méfier de vous-même (données imprévues…) ; en un mot, être paranoïaque !
Les fonctions de filtrage en PHP
Liste des filtres en PHP
- La fonction
filter_list()renvoie un tableau avec une liste de noms de tous les filtres qu'on va pouvoir utiliser.
Code HTML<!doctype html> <html lang="fr"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Les filtres en PHP</title> </head> <body> <h1>Liste des filtres</h1> <?php echo '<pre>'; print_r(filter_list()); echo '</pre>'; ?> </body> </html>Résultat d'exécution
- La fonction
La fonction PHP
filter_has_varDéfinition et utilisation
- Cette fonction retourne true en cas de succès ou false si une erreur survient.
- La fonction
filter_has_var()est une fonction intégrée en PHP qui est utilisée pour vérifier que la variable du type spécifié existe ou non. - La fonction
filter_has_var()vérifie si une variable d'un type d'entrée spécifié existe. - Cette fonction vérifie le contenu reçu par la page PHP, donc la variable doit être envoyée à la page via par exemple une chaîne de requête.
Syntaxe
filter_has_var(type, variable)
Liste de paramètres
- INPUT_GET
- INPUT_POST
- INPUT_COOKIE
- INPUT_SERVER
- INPUT_ENV
Paramètre Description type Obligatoire. Le type d'entrée à vérifier. Il peut s'agir de l'un des éléments suivants : variable Obligatoire. Le nom de la variable à vérifier Exemple
- Le code suivant vérifie si la variable d’input "email" est envoyée à la page PHP, via la méthode "post":
<?php if ( ! filter_has_var ( INPUT_POST, "email" )) { echo("Email n'existe pas"); } sinon { echo("Email existe"); } ?>
- Le code suivant vérifie si la variable d’input "email" est envoyée à la page PHP, via la méthode "post":
La fonction PHP
filter_idDéfinition et utilisation
- La fonction
filter_id()renvoie l'ID de filtre d'un nom de filtre spécifié. - Il est utilisé pour obtenir l'identifiant de filtre du filtre particulier en PHP en utilisant la fonction filter_id en donnant le nom du filtre en entrée et en obtenant l'identifiant associé.
- La fonction
Syntaxe
filter_id(filter_name)
Liste de paramètres
Paramètre Description filter_name Obligatoire. Le nom du filtre à partir duquel obtenir l'identifiant. Astuce : Utilisez filter_list() pour répertorier tous les filtres disponibles La fonction PHP
filter_input_arrayDéfinition et utilisation
- Cette fonction est utile pour récupérer plusieurs valeurs sans avoir à appeler plusieurs fois la fonction filter_input().
Syntaxe
filter_id(filter_name)
Liste de paramètres
- Un tableau définissant les arguments. Une clé valide est une chaîne de caractères contenant le nom de la variable et une valeur valide est soit le type d'un filtre, soit un tableau spécifiant le filtre, les drapeaux et les options. Si la valeur est un tableau, les clés valides sont filter qui spécifie le type du filtre, flags qui spécifie tous les drapeaux à appliquer au filtre, et options qui spécifie toutes les options à appliquer au filtre. Voir l'exemple ci-dessous pour une meilleure compréhension.
- Ce paramètre peut également être un entier contenant une constante de filtre. Ensuite, toutes les valeurs du tableau d'entrée seront filtrées par ce filtre.
Paramètre Description type Une constante parmi INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER ou INPUT_ENV. definition add_empty Ajout des clés manquantes à la valeur NULL dans la valeur retournée. La fonction PHP
filter_inputDéfinition et utilisation
- La fonction
filter_input()obtient une variable externe (par exemple à partir d'une entrée de formulaire) et la filtre éventuellement. - Cette fonction est utilisée pour valider des variables provenant de sources non sécurisées, telles que l'entrée de l'utilisateur.
- La fonction
Syntaxe
filter_input(type, variable, filter, options)
Liste de paramètres
Paramètre Description type Une constante parmi INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER ou INPUT_ENV. varible Obligatoire. Le nom de la variable à vérifier filter Optionnel. Spécifie l'ID ou le nom du filtre à utiliser. La valeur par défaut est FILTER_DEFAULT, ce qui entraîne aucun filtrage. options Optionnel. Spécifie un ou plusieurs indicateurs/options à utiliser. Vérifiez chaque filtre pour les options et les drapeaux possibles. La fonction PHP
filter_listDéfinition et utilisation
- La fonction
filter_list()est utilisée pour renvoyer la liste de tous les filtres pris en charge. - Retourne un tableau de noms de tous les filtres supportés, un tableau vide s'il n'y a pas de filtre.
- Les index de ce tableau ne sont pas les identifiants des filtres, ils peuvent être obtenus avec la fonction
filter_id()à partir du nom.
- La fonction
Syntaxe
filter_list ()
Liste de paramètres
- Cette fonction n'accepte aucun paramètre.
Exemple

La fonction PHP
filter_var_arrayDéfinition et utilisation
- La fonction
filter_var_array()est une fonction intégrée en PHP qui est utilisée pour filtrer de nombreuses valeurs sans appeler plusieurs foisfilter_var().
- La fonction
Syntaxe
filter_var_array(type, arr, add_key)
Liste de paramètres
- La fonction renvoie un tableau contenant les valeurs de variables en cas de succès, FALSE en cas d’échec.
Exemple

La fonction PHP
filter_varDéfinition et utilisation
- La fonction
filter_var()filtre une variable avec un filtre spécifique. - Retourne les données filtrées, ou FALSE si le filtre échoue.
- La fonction
Syntaxe
filter_var (variable, filtre, options)Liste de paramètres
- Obligatoire. Identifiant du filtre à utiliser.
- C’est un paramètre obligatoire, qui spécifie quel contrôle de filtre doit être effectué sur les données d’entrée. Les valeurs prises en charge sont :
FILTER_VALIDATE_INT: Si la donnée d’entrée est un entier valide ou non.FILTER_SANITIZE_STRING: si les données d’entrée sont une chaîne valide ou non et supprimez toutes les balises HTML d’une chaîne d’entrée.FILTER_VALIDATE_IP: si les données d’entrée sont une adresse IP valide ou non.FILTER_SANITIZE_EMAIL: si les données saisies sont une adresse e-mail valide ou non. Filter var supprimera d’abord les caractères illégaux, puis la validation sera effectuée.
Paramètre Description variable Obligatoire. Spécifie la variable à filtrer. filtre options Optionnel. Tableau associatif d'options ou des drapeaux. Si le filtre accepte les options, les drapeaux peuvent être fournis dans le champ "flags" du tableau. Pour les fonctions de rappel, le type callback devra être passé. La fonction de rappel doit acceptée un seul argument ; la valeur à filtrer et retournera la valeur, une fois le filtre appliqué. Exemples
Exemple: 01<?php if(!filter_var("exemple@example.com", FILTER_VALIDATE_EMAIL)) { echo("E-mail non valide"); } else { echo("E-mail valide"); } ?>Exemple: 02
Production<?php $inputString = "<p>Hello World! Welcome to PHP tutorial</p>"; $newstr = filter_var($inputString, FILTER_SANITIZE_STRING); echo $newstr. "\n"; ?>Hello World! Welcome to PHP tutorial
Les filtres de validation en PHP
- Ces filtres PHP servent à valider une donnée sans la modifier, et dans le cas où la valeur n'est pas valide, la valeur false est retournée et si aucune valeur n'existe, null est retourné. En voici quelques unes :
Les filtres de nettoyage en PHP
- Les filtres de nettoyage permettent de "préparer" des données en les nettoyant.
- Ces filtre PHP servent à convertir la donnée pour s'assurer qu'elle contient toujours le format attendu, ce qui est le plus important.
- Les filtres de nettoyage sont donc bien différents des filtres de validation puisqu’à la différence de ces derniers ils ne vont pas nous permettre de valider la forme d’une donnée mais plutôt de modifier la forme des données reçues en suivant certains schémas qui vont dépendre du filtre utilisé.
Nom de l'ID Description FILTER_SANITIZE_STRING Supprime les balises, et supprime ou encode les caractères spéciaux. FILTER_SANITIZE_STRIPPED Alias du filtre "string". FILTER_SANITIZE_ENCODED Applique l'encodage URL, et supprime ou encode les caractères spéciaux. FILTER_SANITIZE_SPECIAL_CHARS Transforme en entité HTML les caractères '"<>& et les caractères ASCII de valeur inférieur à 32, et supprime ou encode les autres caractères spéciaux. FILTER_SANITIZE_EMAIL Supprime tous les caractères, excepté des lettres, des chiffres et ! # $ % & ' * + - / = ? ^ _ ` { | } ~ @ . [] FILTER_SANITIZE_URL Supprime tous les caractères sauf les lettres, chiffres et $ - _ . + ! * ' ( ) , { } | \\ ^ ~ [] ` <> # % " ; / ? : @ & = FILTER_SANITIZE_NUMBER_INT Supprime tous les caractères sauf les chiffres, et les signes plus et moins. FILTER_SANITIZE_NUMBER_FLOAT Supprime tous les caractères, sauf les chiffres, +- et éventuellement .,eE FILTER_SANITIZE_MAGIC_QUOTES Applique addslashes(). FILTER_UNSAFE_RAW Ne fait rien, supprime ou encode les caractères spéciaux. Application
- L'objectif est de voir comment valider une adresse email en PHP.
- La validation d'une adresse e-mail est une action requise avant de soumettre le formulaire.
- Il vérifie si l'utilisateur a fourni une adresse e-mail valide.
- Utiliser les fonctions suivantes pour dégager le moyen le plus simple et le plus efficace pour valider une adresse email en PHP.
- La
fonction filter_var()en PHP fournit un moyen simple de valider les e-mails. - Le filtre
FILTER_VALIDATE_EMAILest utilisé pour valider l'adresse e-mail en PHP. - La fonction
filter_var()renvoie les données filtrées en cas de succès ou FALSE en cas d'échec.
- La
Voir la solution
<?php $email = "riadh.hajji@apcpedagogie.com"; // Email Validation if(filter_var($email, FILTER_VALIDATE_EMAIL)){ echo "L'adresse e-mail est valide"; }else{ echo "L'adresse email n'est pas valide"; } ?>
- L'objectif est de voir comment valider une adresse email en PHP.
| Paramètre | Description |
|---|---|
| type | Obligatoire. Spécifie un tableau avec des clés contenant les données à filtrer. |
| arr | Optionnel. Spécifie un tableau de filtre. La clé représente le nom de variable et la valeur représente le nom ou l’ID de filtre. |
| add_key | Optionnel. Une valeur booléenne. TRUE ajoute les clés manquantes comme NULL à la valeur de retour. La valeur par défaut est TRUE. |