Apprendre à coder sur pierre-giraud.com

DES COURS COMPLETS ET GRATUITS POUR TOUS

SOMMAIRE

Introduction

  1. Présentation du cours
  2. Introduction au PHP
  3. Mettre en place un env. de travail

Les bases en PHP

  1. Syntaxe de base du PHP
  2. Premières instructions PHP
  3. Introduction aux variables PHP
  4. Types de valeurs et concaténation
  5. Opérations sur les variables
  6. Conditions et opérateurs de comparaison
  7. Les conditions if, if...else et if... elseif... else
  8. Utilisation avancée des conditions
  9. Structures ternaires et switch
  10. Les boucles PHP
  11. Découverte des fonctions
  12. La portée des variables
  13. Les constantes PHP
  14. Les variables tableaux PHP
  15. Tableaux associatifs
  16. Tableaux multidimensionnels
  17. Test n°1

Gestion des dates en PHP

  1. Le timestamp
  2. Obtenir et formater une date
  3. Tester la validité d'une date
  4. Test n°2

Opérations sur les fichiers en PHP

  1. Lire, ouvrir, fermer un fichier
  2. Parcourir et lire un fichier par partie
  3. Créer un fichier et écrire dedans
  4. Ecrire dans un fichier
  5. Les instructions include et require
  6. Test n°3

Les variables superglobales

  1. Découverte des variables superglobales
  2. Les cookies
  3. Les sessions
  4. Test n°4

Les expressions régulières et PHP

  1. Découverte des regex
  2. Les fonctions PHP PCRE
  3. Quantifieurs et options
  4. Classes de caractères
  5. Test n°5

L'orienté objet en PHP

  1. Classes, instances et objets
  2. Propriétés et méthodes
  3. Extension de classe et héritage
  4. Le principe d'encapsulation
  5. La méthode constructeur
  6. L'opérateur de résolution de portée et la surcharge
  7. Constantes, méthodes et propriétés statiques
  8. Les classes et méthodes abstraites
  9. Les interfaces
  10. Les méthodes magiques
  11. Le chainage de méthodes
  12. Test n°6

Notions avancées en POO

  1. Le typage explicite
  2. Les traits
  3. Les closures et les classes anonymes
  4. L'auto-chargement des classes
  5. Le mot clef final
  6. Résolution statique à la volée
  7. Parcourir des objets
  8. Le clonage d'objets
  9. Comparaison d'objets
  10. Test n°7

Filtres, erreurs et exceptions

  1. Introduction aux filtres
  2. Utilisation pratique des filtres
  3. Gérer les erreurs en PHP
  4. Gérer les exceptions en PHP

UTILISATION PRATIQUE DES FILTRES PHP

Utilisation courante des filtres PHP

Dans ce chapitre, nous allons illustrer de façon pratique comment fonctionnent certains filtres et voir tout l'intérêt de ceux-ci.

Pour cela, nous allons voir les cas les plus courants d'utilisation des filtres en PHP à savoir :

  • Utiliser les filtres PHP pour valider une adresse IP ;
  • Utiliser les filtres PHP pour nettoyer et valider une adresse mail ;
  • Utiliser les filtres PHP pour nettoyer et valider une URL.

Vérifier la validité d'une adresse IP avec les filtres PHP

Commençons par l'exemple le plus facile qui consiste en une simple validation d'adresse IP.

Pour valider une adresse IP, nous allons utiliser une nouvelle fois la fonction filter_var() avec son filtre IP.

Bien entendu, nous n'allons pas pouvoir vérifier que l'adresse IP existe effectivement, mais nous allons nous assurer que les données envoyées ont la forme attendue (c'est-à-dire la forme d'une adresse IP théorique).

Utilisation des filtres PHP pour valider une adresse IP

Les filtres PHP nous permettent de tester si notre variable contient une IP

Pour comprendre ce code, il faut se rappeler que la fonction filter_var() renvoie false si le filtre échoue ou renvoie les données filtrées dans le cas contraire. On va donc tester si notre fonction renvoie autre chose que false ou pas.

Ici, notez également qu'on utilise l'opérateur !== pour tester la différence en valeur ou en type à cause toujours du chiffre 0 qui peut poser problème selon la version PHP utilisée.

Si notre fonction renvoie autre chose que la valeur false, on affiche donc "l'adresse fournie a bien la forme d'une IP valide".

Vous devez également bien comprendre que derrière chaque filtre se cachent des validations complexes à base de regex, etc. Je ne peux donc pas vous expliquer exactement comment fonctionne chaque filtre, ce qu'il exclut, etc. car cela prendrait des heures ! Contentez vous simplement de faire confiance (dans une certaine limite) à chaque filtre.

On va pouvoir aller plus loin dans la validation d'adresses IP en ne validant que certains types d'adresses, comme les adresses de type IPv4 ou IPv6.

Pour faire cela, nous allons devoir fournir un argument supplémentaire à notre fonction filter_var().

En effet, la fonction filter_var() va également pouvoir accepter des tableaux d'options ou un argument de type "drapeau" (flag) en dernier argument. Rappelez vous des options min_range et max_range utilisées dans le chapitre précédent pour tester qu'un nombre appartenait bien à un certain intervalle.

On va pouvoir appliquer des options ou des drapeaux différents selon le filtre utilisé. Ici, ce sont les drapeaux FILTER_FLAG_IPV4 (qui valide une adresse IPv4) et FILTER_FLAG_IPV6 (qui valide une adresse IPv6) qui vont nous intéresser.

Utilisation des filtres PHP pour vérifier la validité d'une adresse IPv4 ou IPv6

Les filtres PHP nous permettent de tster si notre variable contient une IPv4 ou IPv6

Nettoyer et vérifier la validité d'une adresse mail avec les filtres PHP

Pour vérifier la validité d'une adresse email envoyée par un utilisateur en utilisant les filtres PHP, nous allons généralement procéder en deux étapes : nous allons déjà commencer par nettoyer les données envoyées en supprimant tous les caractères "illégaux" envoyés (un espace, une virgule, etc.) puis nous allons vérifier que les données restantes ont bien la forme d'une adresse email.

Une nouvelle fois, nous n'allons pas pouvoir nous assurer que l'adresse email envoyée existe bien de cette manière, nous allons simplement pouvoir vérifier que les données envoyées ont la forme d'une adresse email (présence d'un symbole "@" par exemple).

Illustrons immédiatement tout cela. Je vous rappelle une nouvelle fois que dans mes exemples je définis mes variables moi même pour plus de simplicité et de clarté. Cependant, gardez bien en tête qu'en pratique les filtres vont être utiles pour vérifier des données envoyées par des utilisateurs via des formulaires par exemple.

Pour nettoyer une adresse email, nous allons utiliser le filtre FILTER_SANITIZE_EMAIL. Pour valider ensuite les données, nous utiilserons le filtre FILTER_VALIDATE_EMAIL.

On nettoie et on valide des adresses mail grâce aux filtres PHP

On affiche le contenu des variables après les avoir nettoyées avec les filtres PHP

Ici, on commence par nettoyer nos variables, c'est-à-dire supprimer tous les caractères illégaux (caractères qui ne peuvent pas se trouver dans des adresses mail. Pour bien illustrer ce que fait ce premier filtre, on affiche le contenu de nos variables nettoyées immédiatement. Comme vous pouvez le voir, les virgules ont été supprimées.

Ensuite, on valide le contenu de nos deux variables $email1 et $email4 en affichant un message à chaque fois précisant si le contenu est valide ou pas.

Comme le contenu de $email2 et $email3 est strictement identique à celui de $email1 après nettoyage, vous ne devriez pas avoir de problème à deviner le résultat en cas de validation des contenus de ces deux variables.

Notez dans l'exemple précédent que j'ai déplacé la place de l'opérateur contraire par rapport aux exemples précédents dans ma condition. C'est une deuxième façon d'écrire qui produit exactement le même résultat.

Utiliser les filtres PHP pour nettoyer et valider une URL

Le procédé va ici être très semblable à ce que nous venons de faire avec les adresses mail.

Nous allons commencer par nettoyer les données envoyées avec le filtre FILTER_SANITIZE_URL puis nous les validerons avec le filtre FILTER_VALIDATE_URL

Notez pour plus de précision que le filtre FILTER_SANITIZE_URL va supprimer tous les caractères sauf les lettres, les chiffres et $-_.+!*'(),{}|\\^~[]`"><#%;/?:@&=. Les caractères accentués, cédillés, etc. vont bien être nettoyés.

Illustrons immédiatement cela avec un exemple :

On nettoie et on valide des URL grâce aux filtres PHP

On vérifie la validité d'URL grâce aux filtres PHP

Grâce à cet exemple, on voit bien que le premier filtre de nettoyage supprime bien le "é" dans notre deuxième URL mais pas le troisième slash de notre dernière URL puisque le slash est un caractère valide à priori.

En revanche, le deuxième filtre de validation va lui s'apercevoir que la troisième URL n'est pas valide puisque l'utilisation d'un triple slash rend le protocole invalide.

Mise en garde par rapport à l'utilisation des filtres

Les filtres constituent un bon moyen d'effectuer une première validation des données, et certains filtres sont mêmes suffisamment puissants pour qu'on puisse se passer d'autres validations.

Attention cependant car ce n'est pas le cas de tous : certains filtres vont laisser passer des syntaxes qui peuvent s'avérer problématiques voire dangereuses tout simplement car ils n'ont aucun moyen de détecter certaines suites de caractères particulières.

C'est par exemple le cas des filtres de nettoyage et de validation d'URL, qui laissent passer beaucoup de caractères et notamment les "<" et ">". Ne placez donc jamais une confiance totale et aveugle dans un mode de validation unique quel qu'il soit et n'hésitez pas à effectuer plusieurs validations différentes en cas de doute.

Chapitre précédent

Chapitre suivant