Les filtres de validation et de nettoyage en PHP
Sommaire
- 1- Objectifs
- 2- Présentation des fonctions de filtrage et de nettoyage en PHP
- 3- Les fonctions de filtrage en PHP
- 3.1- Liste des filtres en PHP
- 3.2- La fonction PHP
filter_has_var
- 3.2.1- Définition et utilisation
- 3.2.2- Syntaxe
- 3.2.3- Liste de paramètres
- 3.2.4- Exemple
- 3.3- La fonction PHP
filter_id
- 3.3.1- Définition et utilisation
- 3.3.2- Syntaxe
- 3.3.3- Liste de paramètres
- 3.4- La fonction PHP
filter_input_array
- 3.4.1- Définition et utilisation
- 3.4.2- Syntaxe
- 3.4.3- Liste de paramètres
- 3.5- La fonction PHP
filter_input
- 3.5.1- Définition et utilisation
- 3.5.2- Syntaxe
- 3.5.3- Liste de paramètres
- 3.6- La fonction PHP
filter_list
- 3.6.1- Définition et utilisation
- 3.6.2- Syntaxe
- 3.6.3- Liste de paramètres
- 3.6.4- Exemple
- 3.7- La fonction PHP
filter_var_array
- 3.7.1- Définition et utilisation
- 3.7.2- Syntaxe
- 3.7.3- Liste de paramètres
- 3.7.4- Exemple
- 3.8- La fonction PHP
filter_var
- 3.8.1- Définition et utilisation
- 3.8.2- Syntaxe
- 3.8.3- Liste de paramètres
- 3.8.4- Exemples
- 4- Les filtres de validation en PHP
- 5- Les filtres de nettoyage en PHP
- 6- Application
- 6.1.1- Cours PHP
Les filtres de validation et de nettoyage en PHP
-
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.
-
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. -
La fonction PHP
filter_has_var
-
Dé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
-
Liste de paramètres
- INPUT_GET
- INPUT_POST
- INPUT_COOKIE
- INPUT_SERVER
- INPUT_ENV
-
Exemple
- 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_id
-
Dé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é.
-
Syntaxe
-
Liste de paramètres
-
La fonction PHP
filter_input_array
-
Définition et utilisation
- Cette fonction est utile pour récupérer plusieurs valeurs sans avoir à appeler plusieurs fois la fonction filter_input().
-
Syntaxe
-
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.
-
La fonction PHP
filter_input
-
Dé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.
-
Syntaxe
-
Liste de paramètres
-
La fonction PHP
filter_list
-
Dé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. -
Syntaxe
-
Liste de paramètres
- Cette fonction n’accepte aucun paramètre.
-
Exemple
-
La fonction PHP
filter_var_array
-
Dé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()
. -
Syntaxe
-
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_var
-
Dé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.
-
Syntaxe
-
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.-
Exemples
-
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é.
-
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_EMAIL
est 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.
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 !
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
filter_has_var(type, variable)
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 |
<?php
if ( ! filter_has_var ( INPUT_POST, "email" )) {
echo("Email n'existe pas");
} sinon {
echo("Email existe");
}
?>
filter_id(filter_name)
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 |
filter_id(filter_name)
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. |
filter_input(type, variable, filter, options)
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. |
filter_list ()
filter_var_array(type, arr, add_key)
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. |
filter_var (variable, filtre, options)
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é. |
Exemple: 01
<?php
if(!filter_var("exemple@example.com", FILTER_VALIDATE_EMAIL))
{
echo("E-mail non valide");
}
else
{
echo("E-mail valide");
}
?>
Exemple: 02
<?php
$inputString = "<p>Hello World! Welcome to PHP tutorial</p>";
$newstr = filter_var($inputString, FILTER_SANITIZE_STRING);
echo $newstr. "\n";
?>
Production
Hello World! Welcome to PHP tutorial
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. |
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";
}
?>