{"id":231817,"date":"2023-01-02T10:30:00","date_gmt":"2023-01-02T07:30:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231817"},"modified":"2023-01-02T11:14:49","modified_gmt":"2023-01-02T08:14:49","slug":"vous-devriez-utiliser-les-fonctions-de-filtrage-php-partie-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/vous-devriez-utiliser-les-fonctions-de-filtrage-php-partie-2\/","title":{"rendered":"Vous devriez utiliser les fonctions de filtrage PHP, partie 2"},"content":{"rendered":"\n<p>Dans <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/vous-devriez-utiliser-les-fonctions-de-filtrage-php-partie-1\/\" title=\"le post pr\u00e9c\u00e9dent\">le post pr\u00e9c\u00e9dent<\/a>, j&rsquo;ai parl\u00e9 des raisons pour lesquelles l&rsquo;utilisation des fonctions de filtrage PHP est plus utile que non.<\/p>\n<p>En bref, cela aide \u00e0 fournir un niveau de validation int\u00e9gr\u00e9 au langage afin que nous n&rsquo;ayons pas \u00e0 r\u00e9\u00e9crire quelque chose. Naturellement, il y a des mises en garde.<\/p>\n<p>Par exemple, si vous devez valider une valeur contenant des caract\u00e8res non latins, vous devrez faire cavalier seul et impl\u00e9menter la validation avec peut-\u00eatre une expression r\u00e9guli\u00e8re.<\/p>\n<p>Mais si vous utilisez des adresses e-mail, des URL, des num\u00e9ros, des adresses IP et bien d&rsquo;autres choses, vous \u00eates <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.validate.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">bien plac\u00e9 pour utiliser quelque chose qui existe d\u00e9j\u00e0<\/a>.<\/p>\n<p>Quoi qu&rsquo;il en soit, tout ce qui pr\u00e9c\u00e8de concerne toujours le filtrage des variables. Qu&rsquo;en est-il des entr\u00e9es, cependant? C&rsquo;est-\u00e0-dire ceux qui proviennent de <code>$_POST<\/code>ou <code>$_GET<\/code>. Il est possible d&rsquo;utiliser une strat\u00e9gie similaire avec une fonction diff\u00e9rente et un jeu de filtres diff\u00e9rent.<\/p>\n<p>Mais si vous comprenez les bases pr\u00e9sent\u00e9es dans le dernier post, alors ce post ne sera pas tr\u00e8s diff\u00e9rent.<\/p>\n<h2>Fonctions de filtrage PHP, partie 2: entr\u00e9es<\/h2>\n<p>Le filtrage des entr\u00e9es est effectu\u00e9 par la <code>filter_input<\/code>fonction. La d\u00e9finition de cette fonction sp\u00e9cifique est\u00a0:<\/p>\n<blockquote>\n<p>Obtient une variable externe sp\u00e9cifique par son nom et la filtre \u00e9ventuellement<\/p>\n<p><a href=\"https:\/\/www.php.net\/manual\/en\/function.filter-input.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Le manuel PHP<\/a><\/p>\n<\/blockquote>\n<p>Et, comme mentionn\u00e9 la derni\u00e8re fois, cela semble un peu bizarre jusqu&rsquo;\u00e0 ce que vous compreniez ce que sont les filtres. Heureusement, nous avons couvert cela dans le post pr\u00e9c\u00e9dent. Et bien que ce post va se concentrer sp\u00e9cifiquement sur <code>POST<\/code>(et tr\u00e8s bri\u00e8vement <code>GET<\/code>).<\/p>\n<p>Il existe cependant d&rsquo;autres filtres. Et ceux-ci incluent :<\/p>\n<ul>\n<li><code>INPUT_COOKIE<\/code><\/li>\n<li><code>INPUT_SERVER<\/code><\/li>\n<li><code>INPUT_ENV<\/code><\/li>\n<\/ul>\n<p>Quoi qu&rsquo;il en soit, \u00e9tant donn\u00e9 que les deux op\u00e9rations les plus courantes que j&rsquo;ai tendance \u00e0 voir dans WordPress incluent <code>POST<\/code>et <code>GET<\/code>, il semble important d&rsquo;inclure ces deux ici.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159070-61e6ebe70068d.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159070-61e6ebe70068d.png\" alt=\"Vous devriez utiliser les fonctions de filtrage PHP, partie 2\"><\/a><\/p>\n<p>L&rsquo;utilisation de ces fonctions est trivialement facile. Supposons que vous ayez une valeur provenant de quelque chose que l&rsquo;utilisateur a fourni dans un formulaire et qu&rsquo;il la soumette au serveur \u00e0 l&rsquo;aide d&rsquo;une <code>POST<\/code>requ\u00eate avec une cl\u00e9 telle que <code>firstname<\/code>.<\/p>\n<p>Le code pour le v\u00e9rifier peut ressembler \u00e0 ceci\u00a0:<\/p>\n<ul>\n<li><code>filter_input(INPUT_POST, 'firstname');<\/code><\/li>\n<\/ul>\n<p>Ce qui est assez facile \u00e0 comprendre car il prend simplement la cl\u00e9, la filtre, puis renvoie une valeur. Et puisqu&rsquo;il renvoie une valeur, nous pouvons mettre en place une clause de garde avant d&rsquo;aller de l&rsquo;avant avec plus de travail\u00a0:<\/p>\n<pre><code>1if (false === filter_input(INPUT_POST, 'firstname')) {\n2\u00a0\u00a0return;\n3}\n<\/code><\/pre>\n<p>Si tout est v\u00e9rifi\u00e9, nous pouvons continuer \u00e0 faire tout ce que nous devons faire avec les informations de l&rsquo;utilisateur. Peut-\u00eatre devons-nous l&rsquo;associer au message actuel pour une raison quelconque\u00a0:<\/p>\n<pre><code>1if (false === filter_input(INPUT_POST, 'firstname')) {\n2\u00a0\u00a0return;\n3}\n4\u00a0\n5$firstname = filter_input(INPUT_POST, 'firstname');\n6update_post_meta(get_the_ID(), 'acme-firstname', $firstname);\n7\u00a0\n8\/\/ Other code you may use...\n<\/code><\/pre>\n<p>De plus, vous pouvez s\u00e9curiser encore plus les informations gr\u00e2ce \u00e0 l&rsquo;utilisation des <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">diff\u00e9rents filtres<\/a> existants. Ceux-ci sont pass\u00e9s comme troisi\u00e8me param\u00e8tre \u00e0 la <code>filter_input<\/code>fonction.<\/p>\n<h3>Et qu&rsquo;en est-il <code>GET<\/code>?<\/h3>\n<p>La bonne chose \u00e0 propos de cette fonction est que, d&rsquo;une mani\u00e8re g\u00e9n\u00e9rale, les m\u00eames r\u00e8gles s&rsquo;appliquent qu&rsquo;avec <code>POST<\/code>except au lieu d&rsquo;utiliser <code>INPUT_POST<\/code>, vous utiliserez <code>INPUT_GET<\/code>.<\/p>\n<p>Et ensuite, vous pouvez travailler sur votre code de la mani\u00e8re qui convient le mieux aux besoins de votre projet.<\/p>\n<h3>S\u00e9curit\u00e9, Nonces, etc.<\/h3>\n<p>Rappelez-vous, ce n&rsquo;est pas quelque chose \u00e0 utiliser \u00e0 la place de la s\u00e9curit\u00e9. C&rsquo;est uniquement dans le but de s\u00e9curiser les donn\u00e9es avant d&rsquo;en faire quoi que ce soit.<\/p>\n<p>Ne remplacez pas la v\u00e9rification des valeurs nonce simplement parce que vous v\u00e9rifiez les donn\u00e9es diff\u00e9remment.<\/p>\n<h2>Variables et entr\u00e9es<\/h2>\n<p>N&rsquo;oubliez pas que ces fonctions sont des variables tr\u00e8s similaires et que les entr\u00e9es sont diff\u00e9rentes. En d&rsquo;autres termes, n&rsquo;essayez pas d&rsquo;utiliser <code>filter_var<\/code>lorsque vous travaillez avec des entr\u00e9es provenant de l&rsquo;utilisateur ou du navigateur. Utilisez-le chaque fois que vous travaillez avec des variables. Et, de m\u00eame, utilisez ht e<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il existe des fonctions WordPress natives pour faciliter la validation, mais il existe \u00e9galement des fonctions de filtrage PHP int\u00e9gr\u00e9es pour la saisie des utilisateurs.<\/p>\n","protected":false},"author":1,"featured_media":235336,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,832,801,841,862],"tags":[1167],"class_list":["post-231817","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-guide-pour-les-debutants","category-php-3","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=231817"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231817\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/235336"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=231817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=231817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=231817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}