Quelle est la différence entre filter_var_array et filter_input_array? Lequel est le meilleur pour votre projet? ]]
En PHP, le filtrage des données est une étape importante pour assurer la sécurité des applications et prévenir les attaques malveillantes. filter_var_array et filter_input_array sont deux fonctions couramment utilisées qui sont utilisées pour filtrer et vérifier les données d'entrée, mais diffèrent dans certains détails. Cet article comparera ces deux fonctions pour aider les développeurs à comprendre leurs différences et à sélectionner les fonctions appropriées en fonction des besoins du projet.
Filter_Var_Array est une version Array de la fonction filter_var qui permet aux développeurs de filtrer plusieurs variables en même temps. Il reçoit deux paramètres:
Le premier paramètre est un tableau contenant les données à filtrer.
Le deuxième paramètre est un tableau qui définit les règles de filtrage et peut être réglé via la constante Filter_ * .
<span><span><span class="hljs-variable">$input_data</span></span><span> = [
</span><span><span class="hljs-string">'email'</span></span><span> => </span><span><span class="hljs-string">'[email protected]'</span></span><span>,
</span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-string">'25'</span></span><span>
];
</span><span><span class="hljs-variable">$filters</span></span><span> = [
</span><span><span class="hljs-string">'email'</span></span><span> => FILTER_VALIDATE_EMAIL,
</span><span><span class="hljs-string">'age'</span></span><span> => FILTER_VALIDATE_INT
];
</span><span><span class="hljs-variable">$filtered_data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_var_array</span></span><span>(</span><span><span class="hljs-variable">$input_data</span></span><span>, </span><span><span class="hljs-variable">$filters</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filtered_data</span></span><span>);
</span></span>
Dans cet exemple, le courrier électronique sera vérifié par filter_validate_email , et l'âge sera vérifié s'il s'agit d'un entier valide. filter_var_array renvoie un tableau contenant les données filtrées.
filter_input_array et filter_var_array ont des fonctions similaires, mais sont principalement utilisées pour obtenir des données à partir du flux d'entrée et du filtre de PHP. Cette fonction est généralement utilisée pour traiter les données d'entrée de $ _get , $ _post , $ _cookie ou $ _request à partir d'un formulaire. Il reçoit également deux paramètres:
Le premier paramètre est une constante qui spécifie la source des données d'entrée (telles que Input_get , input_post , etc.).
Le deuxième paramètre est le tableau de règles de filtrage, similaire à filter_var_array .
<span><span><span class="hljs-variable">$filters</span></span><span> = [
</span><span><span class="hljs-string">'email'</span></span><span> => FILTER_VALIDATE_EMAIL,
</span><span><span class="hljs-string">'age'</span></span><span> => FILTER_VALIDATE_INT
];
</span><span><span class="hljs-variable">$filtered_data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input_array</span></span><span>(INPUT_POST, </span><span><span class="hljs-variable">$filters</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filtered_data</span></span><span>);
</span></span>
Dans cet exemple, filter_input_array obtiendra des données de $ _post et appliquera les règles de filtrage correspondantes.
filter_var_array est utilisé pour filtrer les données à partir d'un tableau arbitraire. Sa source de données d'entrée est entièrement fournie par le développeur et peut être des données d'une base de données, d'un fichier, d'une session ou ailleurs.
filter_input_array est principalement utilisé pour obtenir des données à partir de flux d'entrée intégrés de PHP (tels que $ _get , $ _post , etc.). Il est généralement utilisé pour le filtrage des données de demande telles que le traitement de formulaire, les paramètres d'URL, les cookies, etc.
filter_var_array transmet directement un tableau en entrée, tandis que filter_input_array dépend du tableau d'entrée global de PHP, tel que $ _post , $ _get , etc.
filter_var_array convient à toutes les données de tableau qui doivent être filtrées, peu importe d'où vient les données. filter_input_array est plus adapté au traitement des données à partir des demandes de l'utilisateur, en particulier des soumissions de formulaires ou des paramètres d'URL.
Si vous devez traiter les données à partir de demandes externes (telles que les soumissions de formulaires, les paramètres d'URL, etc.) et les filtrer et les vérifier, filter_input_array est un choix plus approprié. Il traite directement les données dans le flux d'entrée et peut être plus pratique avec les variables globales PHP (telles que $ _get , $ _post ).
Si les données que vous traitez ne proviennent pas directement du flux d'entrée de PHP, mais proviennent d'autres sources (telles que les données de base de données, de fichiers ou de session), Filter_Var_Array est plus flexible et peut filtrer n'importe quel tableau en fonction de vos besoins.
filter_var_array et filter_input_array sont tous deux des outils très utiles. Leurs principales différences résident dans la source des données d'entrée et des scénarios d'application. La fonction à choisir dépend de vos besoins:
Lorsque vous devez traiter des données de flux d'entrée telles que les formulaires, les paramètres d'URL, les cookies, etc., sélectionnez filter_input_array .
Lorsque vous devez filtrer les données à partir d'autres sources, sélectionnez filter_var_array .
Au cours du processus de développement, la sélection de la fonction appropriée selon différentes situations peut efficacement améliorer la sécurité et la maintenabilité du code.