Les filtres de validation et de nettoyage en PHP

Les filtres de validation et de nettoyage en PHP

  1. Objectifs

    • Connaitre les fonctions de filtrage PHP
    • Apprendre à nettoyer et à valider les entrées utilisateur en PHP.
  2. 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.
    • 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 !

    • 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.
  3. 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

         <div class="row"> <div class="col-lg-6 justify-content-start">

    • 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

        • filter_has_var(type, variable)
      • Liste de paramètres

        • Paramètre Description
          type Obligatoire. Le type d’entrée à vérifier. Il peut s’agir de l’un des éléments suivants :

          • INPUT_GET
          • INPUT_POST
          • INPUT_COOKIE
          • INPUT_SERVER
          • INPUT_ENV
          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");
            }
            ?>



    • 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

        • 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_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

        • filter_id(filter_name)
      • Liste de paramètres

        • Paramètre Description
          type Une constante parmi INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER ou INPUT_ENV.
          definition
          • 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.
          add_empty Ajout des clés manquantes à la valeur NULL dans la valeur retournée.
    • 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

        • 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_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

        • filter_list ()
      • Liste de paramètres

        • Cette fonction n’accepte aucun paramètre.
      • Exemple

        • Les filtres de validation et de nettoyage en PHP

    • 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 fois filter_var().
      • Syntaxe

        • filter_var_array(type, arr, add_key)
      • Liste de paramètres

      • 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.
      • La fonction renvoie un tableau contenant les valeurs de variables en cas de succès, FALSE en cas d’échec.
    • Exemple

  4. 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

        • filter_var (variable, filtre, options)
      • Liste de paramètres

        • Paramètre Description
          variable Obligatoire.Spécifie la variable à filtrer.
          filtre
          • 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.
          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

          <?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
  5. 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 :
  6. 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.
  7. 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.
      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";
        }
      ?>



Abonnez vous à notre chaîne YouTube gratuitement