PHP les Filtres

10 Commentaires

La validation est peut-être la chose la plus importante que vous puissiez faire sur un site Web. Pour cela les filtres en PHP nous permettront de s’assurer que les données reçues sont du bon type (entier, réel,…) et éventuellement de la bonne forme (URL, adresse de messagerie). En effet, PHP est un langage  faiblement typé de telle sorte qu’il est préférable de vérifier le type des données que l’utilisateur envoie pour ne pas avoir de surprise.

Avec ce ticket je vous propose des exemples de bouts de code

L’extension filtre est une nouvelle extension, qui est implémenté dès la distribution PHP 5.2.0

 1- Vérifier le type de la variable

 Pour valider une variable, il faut utiliser la fonction filter_var().

 1.1 Les entiers

 

$entier = 10;
if(filter_var($entier, FILTER_VALIDATE_INT) !== false){
echo 'La variable est bien un entier';
}

Si vous testez ce code, vous pouvez constater que le texte s’affiche.

La question qui se pose que renvoie la fonction  filter_var() ?

Elle renvoie la donnée filtrée (dans ce cas, c’est la valeur de la variable) ou false si elle n’est pas valide.

 1.2 Les nombres réels

 

$reel = 14.56;
if(filter_var($reel,FILTER_VALIDATE_FLOAT) !== false){
echo 'La variable est un nombre réel valide ';
}

2- Vérifier la forme de la variable

IL est possible de valider les adresses de messagerie, les liens et les adresses IP grâce aux filtres.

2.1 Les adresses de messagerie

 

$email = 'exemple@exemple.com';
if(filter_var($email,FILTER_VALIDATE_EMAIL) !== false){
echo filter_var($email,FILTER_VALIDATE_EMAIL);
}

Ici , on ne fait vérifier que la forme de l’adresse.

J’ai essayé d’enlever le point(.) et ça marcher toujours, donc ce n’est pas normal !!!

Pour cela il vaux mieux d’utiliser un « FILTER_VALIDATE_REGEXP »

Pour la vérification de la forme des variables, il existe aussi des filtres pour les URL (FILTER_VALIDATE_URL) et les adresses IP (FILTER_VALIDATE_IP)

Maintenant nous passons vers un autre type de validation, la validation avec options:

$var = 200;
$int_options = array("options"=>array("min_range"=>0, "max_range"=>256));
var_dump(filter_var($var, FILTER_VALIDATE_INT, $int_options));

Dans ce cas le résultat affiché sera : int(200), si le nombre donné par exemple 257 le résultat sera bool(false).

3- Les cas des données utilisateurs

 Nous allons voir maintenant le cas des données utilisateur.

La fonction utilisée est : filter_input ()

Elle prend comme paramètres :

Type   :  une constante parmi  INPUT_GET,INPUT_POST, INPUT_COOKIE, INPUT_SERVER ou INPUT_ENV.

Le nom de la variable à récupérer .

Le filtre à appliquer . (exemple FILTER_VALIDATE_FLOAT).

Tableau associatif d’options ou des drapeaux (facultatif).

Cette fois la valeur de retour est différente  par rapport au filter_var().

1.La valeur de la variable demandée en cas de succès.

2.False si le filtre échoue.

3.NULL si la variable passée en deuxième paramètre  n’est pas définie.

Noter bien qu’il existe la fonction filter_has_var()  qui nous permet de vérifier l’existence d’une donnée utilisateur. (donc nous éviter de tester sur la troisième valeur de retour de la fonction filter_input()).

Voici un exemple d’utilisation de ces deux fonctions :

if(filter_has_var(INPUT_POST,'name')){ // 'name' est le nom d'une zone de texte d'un formulaire par exemple
$resultat = filter_input(INPUT_POST,'name',FILTER_VALIDATE_INT);
if($resultat !== false ){
echo "La variable est un entier valide".$resultat;
}
else{
echo "La variable n'est pas du bon type";
}
}

4. Nettoyer une variable

Un autre usage des filtres, c’est le nettoyage des variables.

Pour valider une donnée, nous utilisons un filtre du genre  « FILTER_VALIDATE_*. »

Maintenant, nous allons utiliser un filtre du genre  « FILTER_SANITIZE_*.

$string = "<p>text</p>";
echo filter_var($string, FILTER_SANITIZE_STRING);

Conclusion

Ce que nous avons vu ici sont quelques exemples de ce que nous  pouvons faire avec PHP FILTERS. Bien sûr si vous utilisez des Framework ou bien des CMS, la validation est intégrée par défaut, mais on s’est jamais si quelqu’un souhaite  travailler avec PHP, il a cette possibilité.

Documentation  : www.php.net/manual/fr/ref.filter.php  ; www.siteduzero.com/tutoriel-3-423618-les-filtres-en-php-pour-valider-les-donnees-utilisateur.html

  • Zakaria

    Très bon article ! merci beaucoup, en fait c’est un sujet intéressant et mal connu par les développeurs PHP.

  • soufian777

    Très bon articles et bon continuation 😀

  • Ilyas Kasmi

    très bonne initiative Amine, et très bonne continuation, on aimerait bien voir une introduction sur EZpublish la prochaine fois si c’est possible ….

  • Abdelhafid

    Je rejoins Ilyas sur la remarque, si c’est possible, tu peux faire une série des tutos en commençant par une intro et les bases. ça sera parfait.
    Bonne continuation…. (la continuité est primordiale)

  • Ousrhir Muhammed Chaouky

    Ça fait toujours du bien d’avoir des jeunes qui sont motivés pour faire des choses nouvelles qui peuvent aider d’une façon ou l’autre. merci Amine. Je trouve aussi que la qualité des articles est largement au niveau de ce qu’on peut lire à cet endroit.
    Je te félicite et je te souhaite une très bonne continuation.
    ALAH ALMO3INE

    Ousrhir Muhammed Chaouky

  • Redouane

    c’est très bien expliqué et sa mérite d’être encouragé , bonne continuation.
    en faite preg_match sa fait la faire avec is_numeric

  • Amouhib

    Merci Amine pour le sujet vraiment c’est la 1 ère fois que j’entend parler de ce filtre et c’est intéressant … Bonne continuation 🙂

  • Yassir AJAJA

    Salam Alaikom
    Cher ami, je te souhaite une bonne continuation pour ce projet, je te vois un jeune ami motivé, alors je te donne tout mes encouragement, bien sûr je propose aussi mes services si ça t’intéresse.
    Bonne continuation et bon courage.
    Yassir AJAJA ___ BE YOURSELF ___

  • Adrien

    Merci pour l’info, je ne connaissais pas la notion de filtres 😉

  • BETAR

    Bonjour,
    Super Article