filtre PHP
filtre PHP est utilisé pour valider les données de filtre à partir de sources non sécurisées, telles que la saisie de l'utilisateur.
Qu'est-ce qu'un filtre de PHP?
filtre PHP est utilisé pour valider les données de filtre à partir de sources d'insécurité.
Tester, valider et entrée de l'utilisateur du filtre ou des données personnalisées est une partie importante de toute application Web.
extension de filtre de PHP est conçu pour rendre le filtrage plus facile et plus rapide des données.
Pourquoi utiliser un filtre?
Presque toutes les applications Web sont dépendantes des intrants externes. Ces données proviennent généralement d'utilisateurs ou d'autres applications (telles que les services Web). En utilisant des filtres, vous pouvez vous assurer que les applications obtiennent le type d'entrée correct.
Vous devriez toujours le filtrage de données externe!
Le filtrage des entrées est des questions les plus importantes en matière de sécurité de l'application.
Qu'est-ce que des données externes?
- Les données d'entrée d'un formulaire
- cookies
- les données de services Web
- Variables de serveur
- résultats Base de données de requête
Fonctions et filtres
Pour filtrer une variable, utilisez l'une des fonctions de filtres suivants:
- filter_var () - pour filtrer une seule variable d'un filtre spécifique
- filter_var_array () - pour filtrer plusieurs variables par les mêmes ou différents filtres
- filter_input - Obtenir une variable d'entrée et filtrer
- filter_input_array - Obtenez plus de variables d'entrée, et par les mêmes ou différents filtres pour les filtrer
Dans l'exemple suivant, nous utilisons filter_var () fonction valide un nombre entier:
<?php $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
Le code ci-dessus utilise le "FILTER_VALIDATE_INT" filtre pour filtrer la variable. Étant donné que le nombre entier est légitime, donc la sortie code volonté ci-dessus:
Si nous essayons d'utiliser une variable non-entier (tel que "123abc"), est sortie: "Integer est pas valide".
Pour une liste complète des fonctions et des filtres, consultez notre Manuel PHP Filtre de référence .
Validation et assainissement
Il existe deux types de filtres:
Validation des filtres:
- Utilisé pour valider les données utilisateur
- règles de format strictes (comme la vérification des URL ou E-Mail)
- En cas de succès, le type de rendement attendu, si elle ne retourne FALSE
Désinfection filtres:
- Il est utilisé pour autoriser ou interdire la chaîne de caractères spécifiée
- Pas de règles de format de données
- Toujours remettre la chaîne
Options et drapeaux
Options et drapeaux sont utilisés pour ajouter des options de filtrage supplémentaires pour les filtres spécifiés.
Différents filtres ont différentes options et des drapeaux.
Dans l'exemple suivant, nous utilisons filter_var () et option "max_range" "min_range" et de vérifier un nombre entier:
<?php $var=300; $int_options = array( "options"=>array ( "min_range"=>0, "max_range"=>256 ) ); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
Comme le code ci-dessus, l'option correspondante doit être placée dans un tableau appelé "options" dans. Si un indicateur est pas nécessaire dans le tableau.
Étant donné que le nombre entier est "300", il est pas dans la plage spécifiée, la sortie du code ci-dessus sera:
不是一个合法的整数
Pour une liste complète des fonctions et des filtres, consultez notre Manuel PHP Filtre de référence . Vous pouvez voir les options disponibles pour chaque filtre et des drapeaux.
entrée Validating
Essayons de valider une entrée d'un formulaire.
Nous devons faire première chose est de confirmer que les données d'entrée nous recherchons.
Ensuite, nous utilisons la fonction filter_input () pour filtrer les données saisies.
Dans l'exemple ci-dessous, la variable d'entrée "email" est passé à la page PHP:
<?php if(!filter_has_var(INPUT_GET, "email")) { echo("没有 email 参数"); } else { if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) { echo "不是一个合法的 E-Mail"; } else { echo "是一个合法的 E-Mail"; } } ?>
Des exemples des résultats ci-dessus sont les suivants:
Des exemples expliqués
L'exemple ci-dessus présente une variable d'entrée par (e-mail) "GET" méthode de transfert:
- Détection de la présence de "email" variable d'entrée "GET" Type
- S'il y a une variable d'entrée pour détecter si elle est une adresse e-mail valide
Entrée de purification
Essayons d'éclaircir provenant d'un formulaire URL.
Tout d'abord, nous avons besoin de confirmer que les données d'entrée nous recherchons.
Ensuite, nous assainissons fonction d'entrée filter_input de données ().
Dans l'exemple ci-dessous, la variable d'entrée "url" est passé à la page PHP:
<?php if(!filter_has_var(INPUT_GET, "url")) { echo("没有 url 参数"); } else { $url = filter_input(INPUT_GET, "url", FILTER_SANITIZE_URL); echo $url; } ?>
Des exemples expliqués
Des exemples de ce qui précède par une variable d'entrée (url) "GET" méthode envoyé:
- Détection de la présence de "url" variables d'entrée "GET" Type
- Si la variable d'entrée existe, sa purification (en supprimant les caractères illégaux), et le stocker dans la variable $ url
Si la variable d'entrée est une chaîne comme ceci: "http://www.ruaanoob.com/", la variable $ url après purification est la suivante:
Une pluralité de filtre d'entrée
Les formes sont souvent constituées de plusieurs champs d'entrée. Pour éviter la fonction filter_var ou filter_input appelé à plusieurs reprises, nous pouvons utiliser la filter_var_array ou de la fonction filter_input_array.
Dans ce cas, nous utilisons filter_input_array () pour filtrer trois variables GET. Reçu variables GET est un nom, un âge et une adresse e-mail:
<?php $filters = array ( "name" => array ( "filter"=>FILTER_SANITIZE_STRING ), "age" => array ( "filter"=>FILTER_VALIDATE_INT, "options"=>array ( "min_range"=>1, "max_range"=>120 ) ), "email"=> FILTER_VALIDATE_EMAIL ); $result = filter_input_array(INPUT_GET, $filters); if (!$result["age"]) { echo("年龄必须在 1 到 120 之间。<br>"); } elseif(!$result["email"]) { echo("E-Mail 不合法<br>"); } else { echo("输入正确"); } ?>
Des exemples expliqués
L'exemple ci-dessus a trois variables d'entrée (nom, âge et e-mail) transmis par la méthode "GET":
- Mettre en place un tableau qui contient les noms des variables d'entrée utilisées pour spécifier les variables d'entrée et filtre
- () Fonction, les paramètres d'entrée, y compris les variables GET et vient de mettre tableau appel filter_input_array
- Détection $ result «âge» variable et variable d'entrée "e-mail" est illégale. (S'il y a entrée illégale, après la fonction de l'utilisation filter_input_array (), la variable d'entrée est FALSE.)
filter_input_array () Le second argument de la fonction peut être un tableau ou d'un seul ID de filtre.
Si le paramètre est un seul ID de filtre, le filtre spécifié filtrer toutes les valeurs du tableau d'entrée.
Si ce paramètre est un tableau, le tableau doit se conformer aux règles suivantes:
- Doit être un tableau associatif contenant une variable d'entrée est une clé du tableau (comme variable d'entrée "d'âge")
- La valeur de ce tableau doit être un ID de filtre, ou les dispositions du filtre, des drapeaux et des options réseaux
Utiliser le filtre Callback
En utilisant des filtres de FILTER_CALLBACK, vous pouvez appeler une fonction personnalisée, l'utiliser comme un filtre à utiliser. Ainsi, nous avons un contrôle complet sur le filtrage des données.
Vous pouvez créer votre propre fonction personnalisée, ou vous pouvez utiliser une fonction PHP existantes.
Vous serez prêt à utiliser la fonction de filtre, selon les dispositions spécifiées des options méthode prédéterminées. Dans un tableau associatif avec le nom de "options".
Dans l'exemple suivant, nous utilisons une fonction personnalisée de tous "_" convertis en espaces:
<?php function convertSpace($string) { return str_replace("_", ".", $string); } $string = "www_w3big_com!"; echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace")); ?>
Résultat du code ci-dessus est le suivant:
Des exemples expliqués
Les exemples ci-dessus tous les "_" dans "".:
- Pour créer un "_" est remplacé par "." Fonction
- fonction Appel filter_var (), quels paramètres sont filtre FILTER_CALLBACK et tableau contenant notre fonction