Filtres PHP
Validation des données = Déterminer si les données sont sous une forme appropriée.
Désinfection des données = Supprimer tout caractère illégal des données.
L'extension de filtre PHP
Les filtres PHP sont utilisés pour valider et assainir les entrées externes.
L'extension de filtre PHP possède de nombreuses fonctions nécessaires pour vérifier les entrées de l'utilisateur et est conçue pour faciliter et accélérer la validation des données.
La filter_list()
fonction peut être utilisée pour répertorier ce que propose l'extension de filtre PHP :
Exemple
<table>
<tr>
<td>Filter Name</td>
<td>Filter ID</td>
</tr>
<?php
foreach (filter_list() as $id =>$filter) {
echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
}
?>
</table>
Pourquoi utiliser des filtres ?
De nombreuses applications Web reçoivent des entrées externes. Les entrées/données externes peuvent être :
- Saisie de l'utilisateur à partir d'un formulaire
- Biscuits
- Données de services Web
- Variables de serveur
- Résultats de la requête de base de données
Vous devez toujours valider les données externes !
Des données soumises non valides peuvent entraîner des problèmes de sécurité et casser votre page Web !
En utilisant des filtres PHP, vous pouvez être sûr que votre application reçoit la bonne entrée !
Fonction PHP filter_var ()
La filter_var()
fonction valide et assainit les données.
La filter_var()
fonction filtre une seule variable avec un filtre spécifié. Il faut deux données :
- La variable que vous voulez vérifier
- Le type de chèque à utiliser
Désinfecter une chaîne
L'exemple suivant utilise la filter_var()
fonction pour supprimer toutes les balises HTML d'une chaîne :
Exemple
<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
Valider un entier
L'exemple suivant utilise la filter_var()
fonction pour vérifier si la variable $int est un entier. Si $int est un entier, la sortie du code ci-dessous sera : "L'entier est valide". Si $int n'est pas un entier, la sortie sera : "L'entier n'est pas valide":
Exemple
<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Astuce : filter_var() et problème avec 0
Dans l'exemple ci-dessus, si $int était défini sur 0, la fonction ci-dessus renverra "Integer is not valid". Pour résoudre ce problème, utilisez le code ci-dessous :
Exemple
<?php
$int = 0;
if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Valider une adresse IP
L'exemple suivant utilise la filter_var()
fonction pour vérifier si la variable $ip est une adresse IP valide :
Exemple
<?php
$ip = "127.0.0.1";
if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
echo("$ip is a valid IP address");
} else {
echo("$ip is not a valid IP address");
}
?>
Désinfecter et valider une adresse e-mail
L'exemple suivant utilise la filter_var()
fonction pour d'abord supprimer tous les caractères illégaux de la variable $email, puis vérifier s'il s'agit d'une adresse e-mail valide :
Exemple
<?php
$email = "[email protected]";
// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
?>
Nettoyer et valider une URL
L'exemple suivant utilise la filter_var()
fonction pour d'abord supprimer tous les caractères illégaux d'une URL, puis vérifier si $url est une URL valide :
Exemple
<?php
$url = "https://www.w3schools.com";
// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);
// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
echo("$url is a valid URL");
} else {
echo("$url is not a valid URL");
}
?>
Référence complète du filtre PHP
Pour une référence complète de toutes les fonctions de filtrage, consultez notre référence complète sur les filtres PHP. Vérifiez chaque filtre pour voir quelles options et quels drapeaux sont disponibles.
La référence contient une brève description, et des exemples d'utilisation, pour chaque fonction !