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

INTRODUCTION AUX FILTRES PHP

Utilisation des filtres en PHP

Nous allons utiliser les filtres en PHP pour valider et nettoyer ou assainir des données reçues.

En effet, l’un des grands intérêts du PHP est de pouvoir traiter des données externes. Ainsi, nous serons souvent amenés en PHP à recevoir des données envoyées par des utilisateurs, via des formulaires par exemple.

Les filtres vont donc nous servir à valider ce type de données ou à les nettoyer.

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

Obtenir la liste des filtres disponibles

L’extension filter de PHP fournit 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 obtenir la liste des filtres disponibles, nous pouvons utiliser la fonction filter_list() qui renvoie un tableau avec la liste de tous les filtres qu’on va pouvoir utiliser.

Utilisation de la fonction PHP filter_list()

On utilise la fonction PHP filter_list() pour obtenir la liste des filtres disponibles en PHP

Vous devez également savoir qu’à chaque filtre correspond un id en PHP. Pour connaître l’id d’un filtre, on peut utiliser la fonction filter_id() en précisant en argument le nom du filtre dont on souhaite connaître l’id.

Connaître l’id d’un filtre peut être intéressant pour ensuite l’utiliser plus rapidement en PHP.

 Utilisation de la fonction PHP filter_id()

On utilise la fonction PHP filter_id() pour obtenir l’id d’un filtre

Pour obtenir directement tous les id des filtres disponibles, on peut créer une boucle foreach en bouclant sur les valeurs renvoyées par filter_list() comme ceci :

Utilisation des fonction filter_list() et filter_id() au sein d’une boucle PHP foreach

On utilise filter_list() et filter_id() dans une bouche foreach pour obtenir le nom des filtres PHP et leur id

Ici, on décompose les valeurs renvoyées par filter_list() sous la forme $id => $filtre. On peut tout à fait faire cela puisqu’on sait que filter_list() renvoie un tableau numéroté.

Ensuite on récupère au sein de notre boucle le contenu de la variable $filtre (qui correspond à chaque nouveau tour de boucle à un nom de filtre différent) qu’on utilise en argument de la fonction filter_id() afin d’obtenir l’id correspond au filtre en question.

Au final, on echo donc à chaque nouveau passage dans la boucle le nom d’un filtre et son id associé dans une nouvelle ligne de tableau HTML.

Nettoyer et valider des données en PHP

Nous allons pouvoir utiliser la fonction filter_var() pour à la fois valider ou nettoyer des données en PHP.

Nous allons devoir préciser une variable à valider ou à nettoyer ainsi que le filtre que l’on souhaite utiliser en arguments de cette fonction.

Pour bien utiliser cette fonction, vous devez auparavant comprendre qu’il ne suffit pas de passer le nom d’un filtre en soi dans l’argument de type « filtre » de cette fonction.

Comme nous l’avons mentionné précédemment, nous allons pouvoir utiliser les filtres pour valider ou pour nettoyer les données.

Notez que nous avons deux « types » de filtres différents : ceux qui possèdent le terme validate dans leur nom et ceux qui ne le possèdent pas.

Pour utiliser correctement la fonction filter_var(), nous allons devoir distinguer entre ces deux types de filtres.

Dans le cas où l’on souhaite utiliser un filtre qui possède déjà le mot clef validate dans son nom, nous devrons mentionner le mot clef filter suivi du nom du filtre en argument de type « filtre » de cette fonction, le tout en majuscules. Il faudra séparer les différents mots par des underscores.

Dans le cas où l’on souhaite utiliser un filtre qui ne possède pas le mot clef « validate » dans son nom, il faudra alors mentionner le mot clef filter suivi du type de filtre (validate ou sanitize) que l’on souhaite appliquer, suivi finalement du nom du filtre, séparés par des underscores et en majuscules.

Une autre méthode, plus directe, consiste à simplement préciser l’id correspondant au filtre en argument « filtre » de la fonction filter_var().

Cela peut sembler compliqué à première vue, mais c’est au final très simple. Nous allons immédiatement illustrer cela en prenant différents exemples.

Nettoyer une chaine de caractères

Nous allons déjà utiliser la fonction filter_var() pour nettoyer une chaine de caractères.

Pour filtrer une chaine de caractères, nous utilisons le filtre string (id : 513).

Etant donné qu’on souhaite nettoyer une chaine de caractères, nous préciserons également le mot clef sanitize dans notre fonction filter_var().

On va ainsi par exemple pouvoir utiliser filter_var() pour supprimer des balises HTML d’une chaine de caractères :

Utilisation de la fonction PHP filter_var() pour nettoyer une chaine de caractères

On peut utiliser filter_var() en PHP pour supprimer des balises HTML d’une chaine de caractères

Ici, nous précisons dans notre premier exemple FILTER_SANITIZE_STRING en argument de filter_var() afin de nettoyer notre chaine de caractères. Cela va avoir pour effet de supprimer (ou "nettoyer") tout ce qui ne ressemble pas à du texte dans notre chaine et en particulier ici les balises HTML.

Dans notre deuxième exemple, nous nous contentons de préciser l’id correspondant au filtre string. Comme vous pouvez le voir, les deux méthodes produisent le même résultat.

Valider la présence d’un nombre

La fonction PHP filter_var() va encore nous permettre de vérifier si une (c'est-à-dire valider qu'une) variable contient bien un entier ou un nombre décimal grâce aux filtres int (id : 257) et float (id : 259).

Notez que nous utiliserons les filtres number_int (id : 519) ou number_float (id : 520) pour nettoyer le contenu d’une variable et ne conserver que les parties « nombre entier » ou « nombre décimal ».

Les valeurs renvoyées par filter_var() avec les filtres int et float vont être soit false si le contenu de la variable n’a pas été considéré comme un nombre entier ou décimal, soit le nombre en question.

L’un des grands intérêts d’utiliser filter_var() et ces deux filtres pour valider la présence d’un nombre est que filter_var() va considérer la chaine de caractères « 123 » par exemple comme un nombre entier valide avec son filtre int.

Cette non discrimination sur le type de valeur va être très utile pour vérifier qu’un utilisateur a bien envoyé un nombre valide depuis un formulaire par exemple car les données récupérées à partir d’un formulaire vont toutes être transformées en chaines de caractères.

La seule limite est que filter_var(), avec son filtre int, va évaluer toutes les chaines de caractères commençant par 0 (zéro) à false. Par exemple, la chaine « 01234 » va être évaluée à false, c’est-à-dire comme n’étant pas un nombre entier.

Notez cependant que depuis PHP 5.4.11, la valeur 0 seule est bien considérée comme un nombre par filter_var().

Utilisation de filter_var() en PHP avec ses filtres int et float

On teste si nos variables contiennent bien des nombres entiers ou décimaux

On va également pouvoir passer un tableau multidimensionnel contenant un tableau en troisième argument de filter_var() et en utilisant le filtre int.

Ce tableau va nous permettre de mentionner un intervalle de validité pour nos nombres. Ainsi, notre code ne renverra pas false uniquement si la variable testée contient un nombre inclus dans l’intervalle précisé.

Voici comment on va écrire tout cela :

Utilisation de filter_var() avec son filtre int et des options en PHP

On peut utiliser filter_var() et son filtre float avec des options pour préciser un intervalle de validité des valeurs

Attention, les clefs données aux tableaux doivent être exactement options pour notre tableau multidimensionnel et min_range et max_range pour notre sous-tableau.

Chapitre précédent

Chapitre suivant