Présentation des filtres PHP

Dans cette nouvelle leçon, nous allons découvrir l’extension filter et ce que sont les filtres PHP. Nous allons pour le moment particulièrement nous attarder sur les fonctions de cette extension.

 

Présentation des filtres et de l’extension PHP filter

Les filtres en PHP vont nous permettre de filtrer des données et notamment des données externes comme des données provenant d’utilisateurs et qui ont été transmises par des formulaires.

Les filtres en PHP sont disponibles via l’extension filter qui est une extension activée par défaut depuis PHPH 5.2. Il n’y a donc aucune manipulation à faire pour utiliser les filtres.

Il existe deux grands types de filtres en PHP : des filtres de validation et des filtres de nettoyage.

« Valider » des données correspond à déterminer si les données reçues possèdent la forme attendue. Par exemple, on va pouvoir vérifier si une adresse email possède bien un caractère « @ ».

« Nettoyer » ou « assainir » des données correspond à retirer les caractères indésirables de celles-ci. Nous allons par exemple pouvoir supprimer des espaces non nécessaires ou certains caractères spéciaux gênants.

Des options ou des « drapeaux » vont également pouvoir être utilisées avec certains filtres pour préciser leur comportement dans le cas où on ait un besoin spécifique. Nous aurons l’occasion d’illustrer cela plus tard.

A noter que l’extension filtre, en plus de fournir une liste de filtres puissants, possède également des fonctions et des constantes prédéfinies qu’on va pouvoir utiliser.

 

Les fonctions de l’extension filtre et la liste des filtres disponibles

L’extension filter de PHP nous fournit donc différentes fonctions et filtres qui vont nous permettre de vérifier la conformité des données envoyées par rapport à ce qu’on attend.

Pour être exact, l’extension filter met les fonctions suivantes à notre disposition :

FonctionDescription
filter_list()Retourne une liste de tous les filtres supportés
filter_id()Retourne l’identifiant d’un filtre nommé
filter_input()Récupère une variable externe et la filtre
filter_var()Filtre une variable avec un filtre spécifique
filter_var_array()Récupère plusieurs variables et les filtre
filter_input_array()Récupère plusieurs variables externes et les filtre
filter_has_var()Vérifie si une variable d’un type spécifique existe

Nous allons utiliser la plupart de ces fonctions dans la suite de cette leçon. Pour le moment, essayons déjà d’obtenir la liste des filtres disponibles en utilisant la fonction filter_list().

La fonction filter_list() renvoie un tableau avec une liste de noms de tous les filtres qu’on va pouvoir utiliser.

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP & MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    
    <body>
        <h1>Titre principal</h1>
        <?php
            echo '<pre>';
            print_r(filter_list());
            echo '</pre>';
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

 

Exemple d'utilisation de la fonction filter_list en PHP

En plus du simple nom des filtres, vous devez savoir que l’extension filter utilise d’autres moyens d’identifier un filtre et notamment un système d’id nommés et numérotés. L’id d’un filtre sous forme de chaine de caractères est constitué du mot FILTER suivi du type de filtre et suivi du nom du filtre.

Par exemple, l’id nommé du filtre string est FILTER_SANITIZE_STRING. Notez que certaines fonctions vont accepter le nom des filtres tandis que d’autres vont accepter un id du filtre pour fonctionner.

Pour obtenir l’id numéroté d’un filtre, on va pouvoir utiliser la fonction filter_id(). Cette fonction va prendre un nom de filtre en argument et retourner l’id correspond au filtre si le nom passé correspond bien à un filtre ou false dans le cas contraire.

Pour obtenir directement les id de chaque filtre disponible, on va pouvoir créer une boucle foreach en bouclant sur les valeurs renvoyées par filter_list() et en passant spécifiquement les noms de filtre à filter_id().

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP & MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    
    <body>
        <h1>Titre principal</h1>
        <?php
            echo '
                <table>
                    <tr>
                        <th>Nom du filtre</th>
                        <th>Id numéroté</th>
                    </tr>';
            $filtres_tb = filter_list();
            foreach($filtres_tb as $clef => $nom){
                echo '
                    <tr>
                        <td>' .$nom. '</td>
                        <td>' .filter_id($nom). '</td>
                    </tr>';
            }
            echo '</table>'
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

 

Exemple d'utilisation de la fonction filter_id en PHP

Ici, on choisit de retourner un tableau HTML pour une meilleure présentation. Notez que j’ai déclaré certains styles pour mon tableau dans mon fichier cours.css et notamment appliqué des bordures entre les cellules de mon tableau.

 

Nettoyer et valides des données en PHP : choisir la fonction et le filtre adaptés

Pour filtrer des données et avoir le résultat attendu, il va avant tout falloir utiliser la bonne fonction de l’extension Filter.

Si on ne souhaite filtrer qu’une donnée en particulier, alors on pourra utiliser les fonctions filter_var() ou filter_input() dans le cas où la variable à filtrer est une variable externe au script comme une donnée envoyée via un formulaire par exemple.

Pour filtrer plusieurs données en même temps, on va pouvoir utiliser les fonctions filter_var_array() ou filter_input_array() pour des variables externes.

Finalement, si on souhaite tester l’existence d’un type spécifique de variable, on pourra utiliser la fonction filter_has_var(). Ici, il faut comprendre « type » au sens de la provenance de la variable (récupérées via un formulaire et get ou <code<post, via un cookie, etc).

Dans ce cours, nous allons nous concentrer sur les fonctions filter_var(), filter_input() et filter_has_var().

Pour utiliser la fonction filter_var(), nous allons devoir lui passer le nom de la variable que l’on souhaite filtrer, l’id (sous forme de nombre ou de chaine de caractères) du filtre que l’on souhaite appliquer à la variable et facultativement un tableau associatif d’options ou des drapeaux qui vont servir à préciser notre filtre.

La fonction filter_var() va retourner les données filtrées en cas de succès ou false si le filtre échoue.

La fonction filter_input() va s’utiliser de manière similaire à filter_var() à la différence qu’on va également devoir lui passer en tout premier argument une constante qui va indiquer la façon dont les données ont été transmises pour lever toute ambiguïté sur la variable qu’on souhaite filtrer.

On va pouvoir choisir parmi les constantes suivantes :

  • INPUT_GET : donnée récupérée via un formulaire et la méthode get ;
  • INPUT_POST : donnée récupérée via un formulaire et la méthode post ;
  • INPUT_COOKIE : donnée récupérée via un cookie ;
  • INPUT_SERVER : donnée de serveur ;
  • INPUT_ENV : données d’environnement ;

La fonction filter_input() va également retourner les données filtrées en cas de succès ou false si le filtre échoue.

Finalement, nous allons devoir passer à la fonction filter_has_var() une constante parmi la liste ci-dessus ainsi que le nom de la variable dont on souhaite vérifier l’existence.

Laisser un commentaire