fbpx

Filtrer vos inputs avec les fonctions filter_ de PHP

php“Filtrer les entrées et échapper les sorties” est un standard des plus basiques de PHP. Ce concept implique qu’il ne faut jamais faire confiances aux données provenant de l’utilisateur, ceux ci doivent toujours être filtrées a l’entrée et échappées lors de l’affichage. Ceci peut être parfois chiant surtout quand on commence a avoir a jouer avec des expressions régulières. Heureusement et depuis la version 5.2.0 de PHP, ceci est rendu beaucoup plus facile. En effet, depuis cette version, PHP inclut par défaut la librairie  Filter .

La méthode classique par exemple pour filtrer une adresse Email est d’utiliser une expression régulière comme suit :

$email = 'nom.prenom@exemple.com';
$expression = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";

if (preg_match($expression, $email))
{
    echo "Cette adresse est valide.";
}
else
{
    echo "Cette adresse est invalide";
}

Le protocole de filtrage facilite cette tache en offrant un filtre pour la validation des adresses Email :

$email = 'nom.prenom@exemple.com';
if(filter_var($email, FILTER_VALIDATE_EMAIL) !== false)
{
    echo "Cette adresse est valide."
}
else
{
    echo "Cette adresse est invalide.";
}

Utiliser la deuxième solution a plusieurs bénéfices. Premièrement, il rend le code plus lisible. vous n’aurez plus a valider l’expression régulière et la connaître pour voir ce qu’elle est sensée valider. Secundo, il réduit le pourcentage d’erreur.

voici un deuxieme exemple qui utilise la fonction filter_input qui a pour role de recuperer une variable externe (GET, POST, SESSION, COOKIE etc.) et la filtre

$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
$search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED);
echo "Vous avez recherché $search_html.\n";
echo "Nouvelle recherche.";

Ce code affiche

Vous avez recherché Me & son.
<a href='?search=Me%20%26%20son'>Nouvelle recherche.</a>

Il existe un nombre de validateurs et de filtres que vous pouvez utiliser, ils se divisent essentiellement en deux types: les filtres de validation et les filtres de nettoyage. ils incluent le test sur les types (chaines de caracteres, entiers et booleens etc), le test d’URLS, d’IP etc. Ces fonctions sont toujours plus rapides que n’importe quelle fonction que vous ecrivez puisqu’ils sont ecrites directement en C.

Documentation

Anis Berejeb

Anis est avant tout un passioné de l'agilité et du développement. Avec plus de 15 ans dans le domaine du développement web, son expertise combine des connaissances accrues dans l'ensemble des notions partant du développement logiciel jusqu'à l'organisation des équipes dans les environnements agiles à grande échelle.

You may also like...