Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Filtrer les Données avec PHP 8
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Filtrer les Données avec PHP 8

L'Équipe Alphorm Par L'Équipe Alphorm 18 janvier 2025
Partager
10e lecture en min
Partager
Cet article fait partie du guide Tutoriel Complet pour Apprendre PHP 8 à Travers des Projets Pratiques, partie 14 sur 28.

Valider les données en PHP est essentiel pour éviter les failles de sécurité comme les injections SQL ou XSS.

Sans une validation solide, vos applications risquent de traiter des informations malveillantes, compromettant la sécurité et la fiabilité. Cela peut mener à des erreurs coûteuses et des vulnérabilités critiques.

Dans cet article, découvrez comment utiliser les filtres de vérification en PHP 8 pour valider et nettoyer efficacement vos données, garantissant ainsi des applications sécurisées et performantes.

Table de matière
Les Filtres de Vérification en PHP 8Les Filtres de Nettoyage en PHP 8Nettoyage des Nombres en PHP 8Création de Filtres Personnalisés en PHP 8Exercices Pratiques PHP 8Applications Pratiques des Filtres PHP 8Conclusion

 

Les Filtres de Vérification en PHP 8

Les filtres de vérification en PHP sont utilisés pour valider et vérifier si vos données respectent certains formats ou conditions. Voici un schéma explicatif détaillant les filtres de vérification, leur utilisation, et des exemples pour une meilleure compréhension.

Capture d'écran de la validation d'un nombre entier en PHP 8.

Validation des Nombres Entiers avec PHP 8

Dans cet exemple, vous allez vérifier si une variable contient un nombre entier valide. Vous utiliserez la fonction filter_var avec le filtre FILTER_VALIDATE_INT pour valider l’âge d’un utilisateur.

				
					<?php
$age=95;
if (filter_var($age, FILTER_VALIDATE_INT)) {
echo 'Votre âge est de ' . $age . ' ans';
} else {
echo 'Erreur';
}
?>
				
			

Explications

  • $age = 95; Cette ligne définit une variable $age et lui attribue la valeur 95. Ici, $age représente votre âge.
  • if (filter_var($age, FILTER_VALIDATE_INT)) { Cette ligne utilise la fonction filter_var pour valider si la variable $age est un nombre entier.
  • filter_var : Cette fonction filtre une variable avec un filtre spécifié. Elle prend deux arguments principaux :
  • La variable à filtrer, ici $age.
      • Le filtre à utiliser, ici FILTER_VALIDATE_INT qui vérifie si la variable est un entier valide.
  • echo ‘Votre âge est de ‘ . $age . ‘ ans’; Si la validation réussit (c’est-à-dire que $age est un entier), cette ligne imprime un message indiquant votre âge.
  • echo ‘Erreur’; Si la validation échoue (c’est-à-dire que $age n’est pas un entier, comme $age= »mon age est 95 ans » ou $age=60.3), cette ligne imprime le message ‘Erreur’.

La sortie de programme :

Schéma illustrant les filtres de vérification dans PHP 8.

Validation des Nombres à Virgule en PHP 8

Cet exemple montre comment vous pouvez vérifier si une variable contient un nombre à virgule flottante valide. Vous utiliserez la fonction filter_var avec le filtre FILTER_VALIDATE_FLOAT pour valider un tarif.

				
					<?php
$tarif=20.5;
if(filter_var($tarif,FILTER_VALIDATE_FLOAT)){
echo 'Le tarif est de  '.$tarif.'euro';
}else{
echo 'Erreur';
}
?>
				
			

Explications

  • $tarif = 20.5;

    Cette ligne définit une variable $tarif et lui attribue la valeur 20.5. Ici, $tarif représente un tarif ou un prix.

  • if (filter_var($tarif, FILTER_VALIDATE_FLOAT)) {

    Cette ligne utilise la fonction filter_var pour valider si la variable $tarif est un nombre à virgule flottante (un nombre décimal).

filter_var : Cette fonction filtre une variable avec un filtre spécifié. Elle prend deux arguments principaux :

  • La variable à filtrer, ici $tarif.
  • Le filtre à utiliser, ici FILTER_VALIDATE_FLOAT qui vérifie si la variable est un nombre flottant valide.
  • echo ‘Le tarif est de ‘ . $tarif . ‘ euro’;

    Si la validation réussit (c’est-à-dire que $tarif est un nombre flottant), cette ligne imprime un message indiquant le tarif.

  • echo ‘Erreur’;

    Si la validation échoue (c’est-à-dire que $tarif n’est pas un nombre flottant comme $tarif= »chaine » ), cette ligne imprime le message ‘Erreur’.

La sortie de programme :

 

Affichage de la validation d'un nombre à virgule en PHP 8.

Formation PHP 8 : Gestion Des Données Utilisateur

Découvrir cette formation
image de PHP version 4 avec code en arrière-plan pour le développement web

Validation des Adresses Email en PHP 8

Dans cet exemple, vous allez démontrer comment vérifier si une adresse email est valide. Vous utiliserez la fonction filter_var avec le filtre FILTER_VALIDATE_EMAIL pour valider l’adresse email saisie par l’utilisateur.

				
					<?php
$email = "toto@yahoo.fr";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo 'Votre email est ' . $email;
} else {
echo 'Erreur';
}
?>
				
			

Explications

  • $email = « toto@yahoo.fr »;

    Cette ligne définit une variable $email et lui attribue la valeur « toto@yahoo.fr ». Ici, $email représente une adresse email.

  • if (filter_var($email, FILTER_VALIDATE_EMAIL)) {

    Cette ligne utilise la fonction filter_var pour valider si la variable $email est une adresse email valide.

  • filter_var : Cette fonction filtre une variable avec un filtre spécifié. Elle prend deux arguments principaux :
  • La variable à filtrer, ici $email.
  • Le filtre à utiliser, ici FILTER_VALIDATE_EMAIL qui vérifie si la variable est une adresse email valide.
  • echo ‘Votre email est ‘ . $email;

    Si la validation réussit (c’est-à-dire que $email est une adresse email valide), cette ligne imprime un message indiquant l’adresse email.

  • echo ‘Erreur’;

    Si la validation échoue (c’est-à-dire que $email n’est pas une adresse email valide comme : $email=’toto@yahoo’ et $email=’toto@ yahoo.com’ et $email=’yahoo.com’), cette ligne imprime le message ‘Erreur’.

La sortie de programme :

Affichage de la validation d'une URL en PHP 8, utilisant les filtres.

Validation des URLs en PHP 8

Cet exemple illustre comment vous pouvez vérifier si une URL est valide. Vous utiliserez la fonction filter_var avec le filtre FILTER_VALIDATE_URL pour valider une URL et afficher un lien cliquable si elle est correcte.

				
					<?php
$url = "http://www.google.fr";
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo '<a href="&#039; . $url . &#039;" target="_self" data-wpel-link="internal" rel="follow noopener noreferrer">' . $url . '</a>';
} else {
echo 'Erreur';
}
?>
				
			

Explications

  • $url = « http://www.google.fr »;

    Cette ligne définit une variable $url et lui attribue la valeur « http://www.google.fr ». Ici, $url représente une adresse URL.

  • if (filter_var($url, FILTER_VALIDATE_URL)) {

    Cette ligne utilise la fonction filter_var pour valider si la variable $url est une URL valide.

filter_var : Cette fonction filtre une variable avec un filtre spécifié. Elle prend deux arguments principaux :

  • La variable à filtrer, ici $url.
  • Le filtre à utiliser, ici FILTER_VALIDATE_URL qui vérifie si la variable est une URL valide.
  • echo ‘<a href= »‘ . $url . ‘ » target= »_blank »>’ . $url . ‘</a>’;

    Si la validation réussit (c’est-à-dire que $url est une URL valide), cette ligne imprime un lien HTML utilisant l’URL.

  • echo ‘Erreur’;

    Si la validation échoue (c’est-à-dire que $url n’est pas une URL valide comme $url=’ www.google.com’ en lever le protocole http), cette ligne imprime le message ‘Erreur’.

La sortie de programme :

Affichage montrant l'ajout d'options à la validation d'un entier en PHP 8.

Validation des Adresses IP avec PHP 8

Cet exemple illustre comment vous pouvez vérifier si une URL est valide. Vous utiliserez la fonction filter_var avec le filtre FILTER_VALIDATE_URL pour valider une URL et afficher un lien cliquable si elle est correcte.

				
					<?php
$ip = "127.0.0.1"; // tester $ip='127001' pour avoir Erreur
if (filter_var($ip, FILTER_VALIDATE_IP)) {
echo 'Votre adresse IP est ' . $ip;
} else {
echo 'Erreur';
}
?>
				
			

Explications

  • $ip = « 127.0.0.1 »;

    Cette ligne définit une variable $ip et lui attribue la valeur « 127.0.0.1 ». Ici, $ip représente une adresse IP.

  • if (filter_var($ip, FILTER_VALIDATE_IP)) {

    Cette ligne utilise la fonction filter_var pour valider si la variable $ip est une adresse IP valide.

  • filter_var : Cette fonction filtre une variable avec un filtre spécifié. Elle prend deux arguments principaux :
  • La variable à filtrer, ici $ip.
  • Le filtre à utiliser, ici FILTER_VALIDATE_IP qui vérifie si la variable est une adresse IP valide.
  • echo ‘Votre adresse IP est ‘ . $ip;

    Si la validation réussit (c’est-à-dire que $ip est une adresse IP valide), cette ligne imprime un message indiquant l’adresse IP.

  • echo ‘Erreur’;

    Si la validation échoue (c’est-à-dire que $ip n’est pas une adresse IP valide comme $ip=’127001’ ou $ip=’12543’…), cette ligne imprime le message ‘Erreur’.

La sortie de programme :

Affichage de la suppression des TAGs HTML dans une chaîne en PHP 8.

PHP 8

Maîtrise Complète de PHP 8 : De l'Initiation à l'Expertise en Architecture MVC

Découvrir cette formation
Guide complet PHP 8 pour développement web et meilleures pratiques IT

Options Avancées de Validation en PHP 8

Cet exemple montre comment vous pouvez vérifier si une variable dans PHP 8 est un nombre entier valide et se situe dans une plage spécifique. Vous utiliserez la fonction filter_var avec le filtre FILTER_VALIDATE_INT et des options supplémentaires pour définir les limites minimum et maximum. Dans cet exemple, vous vérifiez si l’âge d’un utilisateur est compris entre 18 et 150 ans.

				
					<?php
$age = 95; // Âge à vérifier
// Définir les options pour la plage de valeurs
$options = [
'options' => [
'min_range' => 18,
'max_range' => 150
]
];
// Valider si l'âge est un entier et est compris entre 18 et 150
if (filter_var($age, FILTER_VALIDATE_INT, $options)) {
echo 'Votre âge est de ' . $age . ' ans';
} else {
echo 'Erreur';
}
?>
				
			

Explications

  • $age = 95;

    Cette ligne définit une variable $age avec une valeur de 95, représentant l’âge à vérifier.

  • Définir les options pour la plage de valeurs

$options = ['options' => ['min_range' => 18, 'max_range' => 150]];

Cette ligne définit un tableau $options avec les limites minimum (min_range) et maximum (max_range) pour la validation de l’âge.

  • Validation de l’âge avec des options

if (filter_var($age, FILTER_VALIDATE_INT, $options)) {

Cette ligne utilise la fonction filter_var pour vérifier si l’âge est un nombre entier valide et s’il est compris entre 18 et 150.

echo ‘Votre âge est de ‘ . $age . ‘ ans’;

Si la validation réussit, cette ligne affiche le message ‘Votre âge est de 95 ans’.

echo ‘Erreur’;

Si la validation échoue, cette ligne affiche le message ‘Erreur’.

La sortie de programme :

Affichage de l'extraction et nettoyage d'un nombre en PHP 8.

Fonctions de Validation PHP 8 et leurs Descriptions

Fonction
Description
Filter_var
Cette fonction filtre une variable avec un filtre spécifié. Elle est utilisée pour valider et/ou assainir les données. FILTER_VALIDATE_INT
FILTER_VALIDATE_FLOAT
Un filtre de filter_var qui vérifie si la variable est un nombre flottant valide
FILTER_VALIDATE_EMAIL
Un filtre de filter_var qui vérifie si la variable est une adresse email valide.
FILTER_VALIDATE_URL
Un filtre de filter_var qui vérifie si la variable est une URL valide.
FILTER_VALIDATE_IP
Un filtre de filter_var qui vérifie si la variable est une adresse IP valide.

Les Filtres de Nettoyage en PHP 8

Les filtres de nettoyage en PHP sont utilisés pour nettoyer ou assainir les données d’entrée, en supprimant ou en transformant les caractères indésirables pour empêcher les injections de code, les attaques XSS, et d’autres types de manipulations malveillantes.

 

Affichage du contrôle qualité des données soumises en PHP 8.

Suppression des TAGs HTML en PHP 8

Cet exemple montre comment vous pouvez supprimer les balises HTML d’une chaîne de texte pour la rendre plus sûre. Vous utiliserez la fonction filter_var avec le filtre FILTER_SANITIZE_STRING pour nettoyer le message. Notez que FILTER_SANITIZE_STRING est obsolète depuis PHP 8.1.0.

				
					<?php
$message = "Coucou,<br>ceci est mon message. <a href="WWW.monsite.com" data-wpel-link="internal" target="_self" rel="follow noopener noreferrer">?on Site</a>";
$nettoyer = filter_var($message, FILTER_SANITIZE_STRING);
echo $nettoyer;
?>
				
			

Remarque

  • FILTER_SANITIZE_STRING : Ce filtre a été marqué obsolète dans PHP 8.1.0. Il est recommandé d’utiliser des fonctions PHP 8 comme htmlspecialchars pour échapper les caractères spéciaux ou strip_tags pour supprimer les balises HTML et PHP de manière plus spécifique.

Alors voila l’exemple mis à jour :

				
					<?php
$message = "ceci<br> est mon <b>message</b>.";
$nettoyer = strip_tags($message);
echo $nettoyer;
?>
				
			

La sortie de programme :

Affichage de la validation de l'âge limité entre 20 et 60 ans en PHP 8.

Remarque :

Ce script utilise filter_var avec FILTER_SANITIZE_STRING pour nettoyer le texte des balises HTML, mais pour des versions plus récentes de PHP, il est préférable d’utiliser strip_tags ou d’autres fonctions pour assurer une meilleure compatibilité et sécurité.

Nettoyage des Adresses Email en PHP 8

Dans cet exemple, vous allez démontrer comment nettoyer une adresse email pour supprimer les caractères invalides. Ensuite, vous validerez l’adresse nettoyée avec filter_var et le filtre FILTER_VALIDATE_EMAIL.

				
					<?php
$email = "toto  @éééyahoo.com";
echo 'email non nettoyée : '.$email . '<br>'; // Affiche l'adresse email non nettoyée
// Nettoyer l'adresse email
$clean_email = filter_var($email, FILTER_SANITIZE_EMAIL);
echo 'email nettoyée : '.$clean_email . '<br>'; // Affiche l'adresse email nettoyée
// Valider l'adresse email
if (filter_var($clean_email, FILTER_VALIDATE_EMAIL)) {
echo 'Adresse email correcte';
} else {
echo 'Erreur';
}
?>
				
			

Explications

  • $email = « toto@yahoo.com »;

    Cette ligne définit une variable $email et lui attribue la valeur « toto@yahoo.com ». Ici, $email représente une adresse email.

  • $clean_email = filter_var($email, FILTER_SANITIZE_EMAIL);

    Cette ligne utilise la fonction filter_var pour nettoyer l’adresse email en supprimant les caractères illégaux dans une adresse email.

  • filter_var : Cette fonction filtre une variable avec un filtre spécifié. Elle prend deux arguments principaux :
  • La variable à filtrer, ici $email.
      • Le filtre à utiliser, ici FILTER_SANITIZE_EMAIL qui supprime les caractères invalides d’une adresse email.
  • if (filter_var($clean_email, FILTER_VALIDATE_EMAIL)) {

    Cette ligne utilise la fonction filter_var pour valider si l’adresse email nettoyée est une adresse email valide.

  • FILTER_VALIDATE_EMAIL : Un filtre de filter_var qui vérifie si la variable est une adresse email valide.
  • echo ‘Adresse email correcte’;

    Si la validation réussit (c’est-à-dire que $clean_email est une adresse email valide), cette ligne affiche le message ‘Adresse email correcte’.

  • echo ‘Erreur’;

    Si la validation échoue (c’est-à-dire que $clean_email n’est pas une adresse email valide), cette ligne affiche le message ‘Erreur’.

La sortie de programme :

Affichage de la vérification que tous les champs de données sont remplis .

Nettoyage des URLs en PHP 8

Cet exemple illustre comment vous pouvez nettoyer une URL pour supprimer les caractères invalides. Vous utiliserez la fonction filter_var avec le filtre FILTER_SANITIZE_URL pour nettoyer l’URL, puis vous la validerez avec FILTER_VALIDATE_URL.

				
					<?php
$url = 'http:// www.google.fr'; // URL avec espace pour test
echo 'URL originale : ' . $url . '<br>';
// Nettoyer l'URL
$clean_url = filter_var($url, FILTER_SANITIZE_URL);
echo 'URL nettoyée : ' . $clean_url . '<br>';
// Valider l'URL
if (filter_var($clean_url, FILTER_VALIDATE_URL)) {
echo 'URL OK';
} else {
echo 'Erreur';
}
?>
				
			

Explications

  • $url = ‘http:// www.google.fr’;

    Cette ligne définit une variable $url avec une URL contenant un espace pour tester le nettoyage.

  • $clean_url = filter_var($url, FILTER_SANITIZE_URL);

    Cette ligne utilise la fonction filter_var pour nettoyer l’URL en supprimant les caractères invalides pour une URL.

  • FILTER_SANITIZE_URL : Un filtre de filter_var qui supprime les caractères invalides d’une URL, comme les espaces.
  • if (filter_var($clean_url, FILTER_VALIDATE_URL)) {

    Cette ligne utilise la fonction filter_var pour valider si l’URL nettoyée est une URL valide.

  • FILTER_VALIDATE_URL : Un filtre de filter_var qui vérifie si la variable est une URL valide.
  • echo ‘URL OK’;

    Si la validation réussit (c’est-à-dire que $clean_url est une URL valide), cette ligne affiche le message ‘URL OK’.

  • echo ‘Erreur’;

    Si la validation échoue (c’est-à-dire que $clean_url n’est pas une URL valide), cette ligne affiche le message ‘Erreur’.

La sortie de programme :

Affichage de l'insertion des données validées dans une base de données .

Nettoyage des Nombres en PHP 8

Dans cet exemple, vous allez montrer comment extraire et nettoyer un nombre PHP 8 entier d’une chaîne de texte. Vous utiliserez la fonction filter_var avec le filtre FILTER_SANITIZE_NUMBER_INT pour extraire le nombre, puis vous le validerez avec FILTER_VALIDATE_INT.

				
					<?php
$age = 'mon age est 102 ans'; // Texte avec un nombre à extraire
echo 'Texte original : ' . $age . '<br>';
// Nettoyer le texte pour extraire le nombre entier
$clean_age = filter_var($age, FILTER_SANITIZE_NUMBER_INT);
echo 'Âge nettoyé : ' . $clean_age . '<br>';
// Valider si le nombre nettoyé est un entier
if (filter_var($clean_age, FILTER_VALIDATE_INT)) {
echo 'Âge correct !';
} else {
echo 'Erreur';
}
?>
				
			

Explications

  • $age = ‘mon age est 102 ans’;

    Cette ligne définit une variable $age contenant une chaîne de texte avec un nombre à extraire.

  • $clean_age = filter_var($age, FILTER_SANITIZE_NUMBER_INT);

    Cette ligne utilise la fonction filter_var pour nettoyer le texte en extrayant uniquement les caractères numériques.

  • FILTER_SANITIZE_NUMBER_INT : Un filtre de filter_var qui supprime tous les caractères non numériques sauf les signes plus (+) et moins (-), ce qui permet de récupérer le nombre entier.
  • if (filter_var($clean_age, FILTER_VALIDATE_INT)) {

    Cette ligne utilise la fonction filter_var pour valider si la chaîne nettoyée représente un entier valide.

  • FILTER_VALIDATE_INT : Un filtre de filter_var qui vérifie si la variable est un entier valide.
  • echo ‘Âge correct !’;

    Si la validation réussit (c’est-à-dire que $clean_age est un entier valide), cette ligne affiche le message ‘Âge correct !’.

  • echo ‘Erreur’;

    Si la validation échoue (c’est-à-dire que $clean_age n’est pas un entier valide), cette ligne affiche le message ‘Erreur’.

La sortie de programme :

Tableau des fonctions de nettoyage disponibles en PHP 8.

Fonctions de Nettoyage PHP 8 et leurs Descriptions

Fonction
Description
FILTER_SANITIZE_STRING
Un filtre de filter_var qui supprime les balises HTML et PHP d’une chaîne. (Obsolète depuis PHP 8.1.0)
FILTER_SANITIZE_EMAIL
Un filtre de filter_var qui supprime les caractères invalides d’une adresse email. FILTER_SANITIZE_URL
FILTER_SANITIZE_NUMBER_INT
Un filtre de filter_var qui supprime tous les caractères non numériques sauf les signes plus (+) et moins (-).
strip_tags
Supprime toutes les balises HTML et PHP d’une chaîne.
htmlspecialchars
Convertit les caractères spéciaux en entités HTML pour éviter les problèmes de sécurité (non utilisé dans les exemples).

Création de Filtres Personnalisés en PHP 8

Création d'un Filtre de Validation d'URL en PHP 8

Dans cet exemple, vous allez créer un filtre de validation personnalisé pour une URL en utilisant une fonction de rappel (callback) avec filter_var. Ce filtre personnalisé vérifie si l’URL commence par « http » ou « https » et respecte un certain format à l’aide d’une expression régulière. L’utilisation de FILTER_CALLBACK permet d’appliquer une logique de validation spécifique aux besoins de l’utilisateur.

				
					<?php
function verifierUrl($urlaVerifier) {
$motif = '#^(http|https)://[a-zA-Z]+\.[a-zA-Z]+\.[a-zA-Z]{2,}#';
$result = preg_match($motif, $urlaVerifier);
return $result;
}
$url = 'http://www.google.fr'; // Essayez de tester aussi 'htt://www.google.fr' et 'www.google.fr'
$options = [
'options' => 'verifierUrl'
];
if (filter_var($url, FILTER_CALLBACK, $options)) {
echo 'URL OK';
} else {
echo 'URL KO';
}
?>
				
			

Détails des éléments du code

Définition de la fonction verifierUrl :

  • function verifierUrl($urlaVerifier) : Cette fonction prend une URL en entrée.
    • $motif = ‘#^(http|https)://[a-zA-Z]+\.[a-zA-Z]+\.[a-zA-Z]{2,}#’; : Cette ligne définit une expression régulière qui vérifie si l’URL commence par « http » ou « https » et a un format correct.
    • $result = preg_match($motif, $urlaVerifier); : Utilise preg_match pour vérifier si l’URL correspond à l’expression régulière.
    • return $result; : Retourne le résultat de preg_match (1 si l’URL correspond, 0 sinon).

Définition de l’URL à tester :

  • $url = ‘http://www.google.fr’; : L’URL à valider. On peut aussi tester avec ‘htt://www.google.fr’ et ‘www.google.fr’ pour voir les résultats de la validation.

Options pour filter_var :

  • $options = [‘options’ => ‘verifierUrl’]; : Spécifie que filter_var doit utiliser la fonction verifierUrl comme fonction de rappel pour la validation.

Validation de l’URL :

  • if (filter_var($url, FILTER_CALLBACK, $options)) { : Utilise filter_var avec FILTER_CALLBACK pour valider l’URL en utilisant la fonction de rappel.
    • echo ‘URL OK’; : Affiche « URL OK » si l’URL est valide.
    • echo ‘URL KO’; : Affiche « URL KO » si l’URL est invalide comme(‘htt://www.google.fr’ ou ‘www.google.fr’).

La sortie de programme :

  • La sortie de programme sera : URL OK
  • Dans le cas de changer $ulr avec $url=’http://www.google.fr’ ou $url=’www.google.fr’… il sera afficher URL KO car dans le premier il manque ‘p’ dans http et le deuxième l’absence de http.

Création d'un Filtre de Nettoyage de Téléphone en PHP 8

Dans cet exemple, vous allez créer un filtre de nettoyage personnalisé pour un numéro de téléphone en utilisant une fonction de rappel (callback) avec filter_var. Ce filtre personnalisé supprimera tous les caractères non numériques d’une chaîne de texte représentant un numéro de téléphone, puis remplira la chaîne pour atteindre une longueur de 10 caractères en ajoutant des astérisques (*) à droite si nécessaire. L’utilisation de FILTER_CALLBACK vous permet d’appliquer une logique de nettoyage spécifique aux besoins de l’utilisateur.

				
					<?php
function telaNettoyer($telanettoyer) {
$motif = '#[^0-9]#';
$result = preg_replace($motif, '', $telanettoyer);
$result = str_pad($result, 10, '*', STR_PAD_RIGHT);
return $result;
}
$tel = 'a06z12345678ee';
echo 'Tel avant le nettoyage : '.$tel.'<br>';
$options = [
'options' => 'telaNettoyer'
];
$telephone = filter_var($tel, FILTER_CALLBACK, $options);
echo 'tel aprés le nettoyage : '.$telephone;
?>
				
			

Détails des éléments du code

Définition de la fonction telaNettoyer :

  • function telaNettoyer($telanettoyer) : Cette fonction prend un numéro de téléphone en entrée.
    • $motif = ‘#[^0-9]#’; : Cette ligne définit une expression régulière qui correspond à tous les caractères non numériques.
    • $result = preg_replace($motif,  », $telanettoyer); : Utilise preg_replace pour supprimer tous les caractères non numériques du numéro de téléphone.
    • $result = str_pad($result, 10, ‘*’, STR_PAD_RIGHT); : Utilise str_pad pour remplir la chaîne jusqu’à 10 caractères en ajoutant des astérisques (*) à droite si nécessaire.
    • return $result; : Retourne le résultat nettoyé.

Définition du numéro de téléphone à nettoyer :

  • $tel = ‘ a06z12345678ee ‘; : Le numéro de téléphone à nettoyer.
  • Options pour filter_var :
    • $options = [‘options’ => ‘telaNettoyer’]; : Spécifie que filter_var doit utiliser la fonction telaNettoyer comme fonction de rappel pour le nettoyage.

Nettoyage du numéro de téléphone :

  • $telephone = filter_var($tel, FILTER_CALLBACK, $options); : Utilise filter_var avec FILTER_CALLBACK pour nettoyer le numéro de téléphone en utilisant la fonction de rappel.

Affichage du numéro de téléphone nettoyé :

  • echo $telephone; : Affiche le numéro de téléphone nettoyé.

La sortie de programme :

Affichage de la création d'un filtre personnalisé pour nettoyer un numéro de téléphone

Exercices Pratiques PHP 8

Exercice : Nettoyer et Valider une Adresse Email en PHP 8

Cet exemple montre comment créer un formulaire HTML PHP 8  vous permettant de saisir une adresse email, puis comment valider et nettoyer cette adresse en utilisant PHP. La validation garantit que l’email est conforme à un format standard, tandis que le nettoyage élimine les caractères non valides. Si votre adresse email a été modifiée pendant le nettoyage, cela sera indiqué.

				
					<!DOCTYPE html>
<html lang="en">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Nettoyer et valider une adresse email</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.rll-youtube-player .play{--wpr-bg-3f88bdb2-0cf3-4ea3-a5b0-5f55bf1849ce: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-3f88bdb2-0cf3-4ea3-a5b0-5f55bf1849ce: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"3f88bdb2-0cf3-4ea3-a5b0-5f55bf1849ce","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<form action="" method="post">
<input type="text" name="email" placeholder="Votre email"/>
<input type="submit" value="Valider" name="valider"/>
</form>
<?php
if (isset($_POST['valider'])) {
$email = $_POST['email'];
if (empty($email)) {
echo 'Merci de rentrer une adresse email';
} else {
// Nettoyer l'adresse email
$emailNettoyer = filter_var($email, FILTER_SANITIZE_EMAIL);
// Valider l'adresse email nettoyée
if (filter_var($emailNettoyer, FILTER_VALIDATE_EMAIL)) {
// Vérifier si l'email a été modifié par le nettoyage
if ($email == $emailNettoyer) {
echo "Cet email n'a pas dû être nettoyé";
} else {
echo 'Cet email a dû être nettoyé<br>Email reçu : ' . $email . '<br>Email nettoyé : ' . $emailNettoyer;
}
} else {
echo 'Email non valide';
}
}
}
?>
<script>class RocketElementorAnimation{constructor(){this.deviceMode=document.createElement("span"),this.deviceMode.id="elementor-device-mode-wpr",this.deviceMode.setAttribute("class","elementor-screen-only"),document.body.appendChild(this.deviceMode)}_detectAnimations(){let t=getComputedStyle(this.deviceMode,":after").content.replace(/"/g,"");this.animationSettingKeys=this._listAnimationSettingsKeys(t),document.querySelectorAll(".elementor-invisible[data-settings]").forEach(t=>{const e=t.getBoundingClientRect();if(e.bottom>=0&&e.top<=window.innerHeight)try{this._animateElement(t)}catch(t){}})}_animateElement(t){const e=JSON.parse(t.dataset.settings),i=e._animation_delay||e.animation_delay||0,n=e[this.animationSettingKeys.find(t=>e[t])];if("none"===n)return void t.classList.remove("elementor-invisible");t.classList.remove(n),this.currentAnimation&&t.classList.remove(this.currentAnimation),this.currentAnimation=n;let s=setTimeout(()=>{t.classList.remove("elementor-invisible"),t.classList.add("animated",n),this._removeAnimationSettings(t,e)},i);window.addEventListener("rocket-startLoading",function(){clearTimeout(s)})}_listAnimationSettingsKeys(t="mobile"){const e=[""];switch(t){case"mobile":e.unshift("_mobile");case"tablet":e.unshift("_tablet");case"desktop":e.unshift("_desktop")}const i=[];return["animation","_animation"].forEach(t=>{e.forEach(e=>{i.push(t+e)})}),i}_removeAnimationSettings(t,e){this._listAnimationSettingsKeys().forEach(t=>delete e[t]),t.dataset.settings=JSON.stringify(e)}static run(){const t=new RocketElementorAnimation;requestAnimationFrame(t._detectAnimations.bind(t))}}document.addEventListener("DOMContentLoaded",RocketElementorAnimation.run);</script></body>
</html>
				
			

Détails des éléments du code

Vérification de la soumission du formulaire :

  • if (isset($_POST[‘valider’])) { : Cette condition vérifie si le formulaire a été soumis en utilisant le bouton « Valider ». Si c’est le cas, le traitement du formulaire commence.

Récupération et vérification du champ email :

  • $email = $_POST[’email’]; : Cette ligne récupère l’adresse email soumise via le formulaire et la stocke dans la variable $email.
  • if (empty($email)) { : Vérifie si le champ email est vide. Si c’est le cas, affiche un message demandant de rentrer une adresse email.

Nettoyage de l’adresse email :

  • $emailNettoyer = filter_var($email, FILTER_SANITIZE_EMAIL); :
  • filter_var : Cette fonction est utilisée pour filtrer et valider les données.
  • FILTER_SANITIZE_EMAIL : Ce filtre supprime tous les caractères d’une chaîne qui ne sont pas autorisés dans une adresse email. Il nettoie l’adresse email en retirant les caractères non valides, tels que les espaces, les virgules et d’autres caractères spéciaux.

Validation de l’adresse email nettoyée :

  • if (filter_var($emailNettoyer, FILTER_VALIDATE_EMAIL)) { :
  • FILTER_VALIDATE_EMAIL : Ce filtre valide si une adresse email est conforme à un format standard d’adresse email. Il vérifie que l’adresse email nettoyée est valide.

Vérification si l’email a été modifié par le nettoyage :

  • if ($email == $emailNettoyer) { : Vérifie si l’adresse email d’origine est identique à l’adresse email nettoyée.
  • echo « Cet email n’a pas dû être nettoyé »; : Si l’email d’origine et l’email nettoyé sont identiques, cela signifie que l’email n’a pas été modifié par le processus de nettoyage.
  • else { :
  • echo ‘Cet email a dû être nettoyé<br>Email reçu: ‘ . $email . ‘<br>Email nettoyé : ‘ . $emailNettoyer; : Si l’email d’origine et l’email nettoyé sont différents, cela signifie que des caractères non valides ont été supprimés de l’email d’origine.

Affichage de l’email nettoyé :

  • echo $emailNettoyer; : Affiche l’adresse email nettoyée, qu’elle ait été modifiée ou non.

Message d’erreur pour un email non valide :

  • else { echo ‘Email non valide’; } : Si l’email nettoyé n’est pas valide, affiche un message indiquant que l’email n’est pas valide.

La sortie de programme :

Nous avons testé cet e-mail : ‘toto@éégmail.com’ et voici le résultat :

Affichage de la validation d'une adresse email après nettoyage en PHP 8.

Applications Pratiques des Filtres PHP 8

Traitement Simultané de Variables en PHP 8

Ce code PHP montre comment définir et appliquer des filtres de validation à plusieurs champs de données soumises via la méthode POST d’un formulaire HTML. En utilisant la fonction filter_input_array, vous assurez que les valeurs saisies dans les champs « prenom » et « nom » sont validées selon les filtres spécifiés.

				
					<?php
// Récupération des données soumises via la méthode POST
$_POST['prenom'];
$_POST['nom'];
// Définition des filtres pour chaque champ
$filters = [
'prenom' => FILTER,
'nom' => FILTER
];
// Application des filtres aux données soumises
filter_input_array(INPUT_POST, $filters);
				
			

Application : Mise en Place de Filtres en PHP 8

Ce code illustre comment vous pouvez utiliser les filtres en PHP pour valider plusieurs entrées d’un formulaire HTML. En utilisant la fonction filter_input_array, vous pouvez valider et filtrer les données soumises par l’utilisateur en une seule étape, garantissant ainsi que les valeurs saisies sont valides avant de les traiter.

				
					<!DOCTYPE html>
<html lang="fr">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulaire</title>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.rll-youtube-player .play{--wpr-bg-3f88bdb2-0cf3-4ea3-a5b0-5f55bf1849ce: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-3f88bdb2-0cf3-4ea3-a5b0-5f55bf1849ce: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"3f88bdb2-0cf3-4ea3-a5b0-5f55bf1849ce","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<form action="" methode="post">
<input type="text" name="email" placeholder="Votre email">
<input type="text" name="age" placeholder="Votre age">
<input type="submit" name="valider" value="valider">
</form>
<?php
if(isset($_POST['valider'])){
$filters = [
'email'=> FILTER_VALIDATE_EMAIL,
'age'=>FILTER_VALIDATE_INT
];
$result = filter_input_array(INPUT_POST,$filters);
}
?>
</body>
</html>
				
			

Application : Vérification de la Complétude des Données en PHP 8

La partie du code en question est utilisée pour s’assurer que tous les champs du formulaire PHP8 ont été remplis avant de procéder à la validation des données. En vérifiant que les champs ne sont pas vides, vous pouvez garantir que les données soumises sont complètes et éviter des erreurs liées à des informations manquantes.

				
					foreach($filters as $filter=>$value){
if(empty($_POST[$filter])){
echo '<p>'.ucfirst($filter).'est vide</p>';
}
}
				
			
  • Boucle foreach : Parcourt chaque champ défini dans le tableau $filters.
  • empty($_POST[$filter]) : Vérifie si le champ correspondant dans le tableau $_POST est vide.
  • echo ‘<p>’ . ucfirst($filter) . ‘ est vide</p>’; : Affiche un message indiquant que le champ est vide, avec le nom du champ mis en majuscule pour une meilleure lisibilité.

La sortie de programme :

Affichage de la vérification que tous les champs de données sont remplis en PHP 8.

Application : Contrôle de la Qualité des Données en PHP 8

Dans le contexte de la validation des données de formulaire, il est crucial non seulement de vérifier que les champs sont remplis, mais aussi de s’assurer que les données fournies respectent les critères de validité spécifiés. Cette étape est essentielle pour garantir la qualité et l’intégrité des données reçues. Le code ajouté vous permet de détecter et de signaler les valeurs qui ne répondent pas aux exigences de validation définies.

				
					}elseif($result[$filter] === false){
echo '<p>'.ucfirst($filter).' invalide !</p>';
}
				
			
  • elseif ($result[$filter] === false) : Vérifie si le résultat du filtre appliqué au champ est false, ce qui indique que la donnée ne respecte pas les critères de validation.
  • echo ‘<p>’ . ucfirst($filter) . ‘ invalide !</p>’; : Affiche un message informant que la donnée du champ est invalide, avec le nom du champ mis en majuscule pour plus de clarté.

La sortie de programme :

Lorsque vous remplissez l’email avec ‘toto@’ et l’âge avec ‘AA’, voici le résultat :

Affichage du contrôle qualité des données soumises en PHP 8.

Application : Insertion des Données en PHP 8

Une fois que les données soumises via le formulaire ont été validées et vérifiées, l’étape suivante est d’enregistrer ces données dans une base de données pour un stockage permanent et un traitement ultérieur. Ce processus implique non seulement la confirmation que toutes les données sont correctes et complètes, mais aussi leur insertion effective dans le système de gestion de base de données.

				
					$controle_presence=0;
$controle_filtre=0;
foreach($filters as $filter=>$value){
if(empty($_POST[$filter])){
echo '<p>'.ucfirst($filter).' est vide</p>';
$controle_presence+=1;
}elseif($result[$filter] === false){
echo '<p>'.ucfirst($filter).' invalide !</p>';
$controle_filtre+=1;
}
}
if(($controle_presence==0)&& ($controle_filtre ==0)){
echo '<p>Insérer dans une BDD</p>';
echo '<p>Email : '.$result['email'].'</p>';
echo '<p>Age : '.$result['age'].'</p>';
}
				
			

Vérification de la Présence et de la Validité :

  • empty($_POST[$filter]) : Vérifie si le champ est vide et incrémente le compteur $controle_presence.
  • $result[$filter] === false : Vérifie si le filtre a échoué et incrémente le compteur $controle_filtre.

Affichage des Données ou Message d’Insertion :

  • Si aucune erreur n’est détectée (les compteurs sont à 0), les données validées sont prêtes pour l’insertion dans la base de données.
  • Les informations sont affichées à titre d’exemple, mais en pratique, elles seraient insérées dans une base de données à l’aide d’une requête SQL.

La sortie de programme :

Lorsque les données sont correctement saisies, voici l’affichage des résultats :

Affichage de l'insertion des données validées dans une base de données en PHP 8.

Application : Limitation de l'Âge en PHP 8

Dans cette application, vous allez simplement ajouter des options pour limiter l’âge à une plage comprise entre 20 et 60 ans. Voici le code correspondant :

				
					'age'=>[
'filter'=>FILTER_VALIDATE_INT,
'options'=>[
'min_range'=>20,
'max_range'=>60
]
]
				
			

La sortie de programme :

Après cette modification, lorsque l’âge est inférieur à 20 ou supérieur à 60, l’affichage sera « Âge invalide ». Voici un exemple d’affichage que vous avez testé avec l’âge égal à 65 et voilà le résultat :

Affichage de la validation de l'âge limité entre 20 et 60 ans en PHP 8.

Application : Création d'une Expression Régulière en PHP 8

Créer une expression régulière permet de définir des motifs précis pour valider et extraire des données au sein des chaînes de caractères, offrant ainsi un contrôle détaillé sur la qualité des informations. Dans notre cas, nous avons intégré une vérification de date au formulaire comme suit :

				
					<input type="text" name="dateNaissance" placeholder="Votre date de naissance">
				
			

Puis, nous avons ajouté une validation de date dans le tableau $filters avec la configuration suivante :

				
					'dateNaissance'=>[
'filter'=>FILTER_VALIDATE_REGEXP,
'options'=>[
'regexp'=>'#^[0-9]{2}/[0-9]{2}/[0-9]{4}$#',
]
]
				
			

Enfin, pour afficher la date validée et prête à être insérée, nous utilisons :

				
					echo '<p>Date de naissance : '.$result['dateNaissance'].'</p>';
				
			

La sortie de programme :

Après avoir effectué ces modifications, lorsqu’on teste avec une adresse e-mail correcte et un âge compris entre 20 et 60 ans, mais qu’on entre une date telle que 2000, un message d’erreur s’affiche indiquant « date de naissance invalide ». Voici un exemple d’affichage :

Affichage de la validation d'une date de naissance avec une expression régulière .

Code Source Complet PHP 8

				
					<!DOCTYPE html>
<html lang="fr">
<head>

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulaire</title>
<style></style>
<style id="wpr-lazyload-bg-container"></style><style id="wpr-lazyload-bg-exclusion"></style>
<noscript>
<style id="wpr-lazyload-bg-nostyle">.rll-youtube-player .play{--wpr-bg-3f88bdb2-0cf3-4ea3-a5b0-5f55bf1849ce: url('https://blog.alphorm.com/wp-content/plugins/wp-rocket/assets/img/youtube.png');}</style>
</noscript>
<script type="application/javascript">const rocket_pairs = [{"selector":".rll-youtube-player .play","style":".rll-youtube-player .play{--wpr-bg-3f88bdb2-0cf3-4ea3-a5b0-5f55bf1849ce: url('https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png');}","hash":"3f88bdb2-0cf3-4ea3-a5b0-5f55bf1849ce","url":"https:\/\/blog.alphorm.com\/wp-content\/plugins\/wp-rocket\/assets\/img\/youtube.png"}]; const rocket_excluded_pairs = [];</script></head>
<body>
<form action="" method="post">
<input type="text" name="email" placeholder="Votre email">
<input type="text" name="age" placeholder="Votre age">
<input type="text" name="dateNaissance" placeholder="Votre date de naissance">
<input type="submit" name="valider" value="valider">
</form>
<?php
if(isset($_POST['valider'])){
$filters = [
'email'=> FILTER_VALIDATE_EMAIL,
'age'=>[
'filter'=>FILTER_VALIDATE_INT,
'options'=>[
'min_range'=>20,
'max_range'=>60
]
],
'dateNaissance'=>[
'filter'=>FILTER_VALIDATE_REGEXP,
'options'=>[
'regexp'=>'#^[0-9]{2}/[0-9]{2}/[0-9]{4}$#',
]
]
];
$result = filter_input_array(INPUT_POST,$filters);
$controle_presence=0;
$controle_filtre=0;
foreach($filters as $filter=>$value){
if(empty($_POST[$filter])){
echo '<p>'.ucfirst($filter).' est vide</p>';
$controle_presence+=1;
}elseif($result[$filter] === false){
echo '<p>'.ucfirst($filter).' invalide !</p>';
$controle_filtre+=1;
}
}
if(($controle_presence==0)&& ($controle_filtre ==0)){
echo '<p>Insérer dans une BDD</p>';
echo '<p>Email : '.$result['email'].'</p>';
echo '<p>Age : '.$result['age'].'</p>';
echo '<p>Date de naissance : '.$result['dateNaissance'].'</p>';
}
}
?>
</body>
</html>
				
			

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui. Découvrez des cours variés pour tous les niveaux !

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

Conclusion

En conclusion, les filtres de vérification et de nettoyage en PHP 8 offrent une solution robuste pour garantir l’intégrité et la sécurité des données dans vos applications web. Que vous travailliez sur la validation des entiers, la vérification des emails, ou le nettoyage des chaînes de texte, PHP 8 vous fournit les outils nécessaires pour accomplir ces tâches efficacement. En utilisant ces filtres de manière judicieuse, vous pouvez non seulement améliorer la qualité de vos données, mais aussi renforcer la protection de votre application contre les attaques potentielles. Adopter ces pratiques est essentiel pour tout développeur souhaitant garantir des standards élevés de sécurité et de performance dans le développement web moderne. Et par la suite nous allons entamer un exercice pratique de PHP 8.

Cet article fait partie du guide Tutoriel Complet pour Apprendre PHP 8 à Travers des Projets Pratiques, partie 14 sur 28.
< Réaliser un projet avec PHP 8Réaliser un exercice pratique en PHP 8 >

ÉTIQUETÉ : PHP8
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Filtrer les Données avec PHP 8

© Alphorm - Tous droits réservés