{"id":232117,"date":"2023-01-02T10:50:00","date_gmt":"2023-01-02T07:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232117"},"modified":"2023-01-02T11:05:19","modified_gmt":"2023-01-02T08:05:19","slug":"dovresti-utilizzare-le-funzioni-di-filtro-php-parte-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/dovresti-utilizzare-le-funzioni-di-filtro-php-parte-2\/","title":{"rendered":"Dovresti utilizzare le funzioni di filtro PHP, parte 2"},"content":{"rendered":"\n<p>Nel <a href=\"https:\/\/wordpress.mediadoma.com\/it\/dovresti-utilizzare-le-funzioni-di-filtraggio-php-parte-1\/\" title=\"post precedente\">post precedente<\/a>, ho parlato dei motivi per cui l&#8217;utilizzo delle funzioni di filtraggio PHP \u00e8 pi\u00f9 utile piuttosto che no.<\/p>\n<p>In breve, ci\u00f2 aiuta a fornire un livello di convalida integrato nel linguaggio in modo da non dover riscrivere qualcosa. Naturalmente, ci sono delle avvertenze.<\/p>\n<p>Ad esempio, se devi convalidare un valore che \u00e8 di caratteri non latini, dovrai farlo da solo e implementare la convalida con forse un&#8217;espressione regolare.<\/p>\n<p>Ma se stai utilizzando indirizzi e-mail, URL, numeri, indirizzi IP e molte altre cose, allora sei in <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.validate.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">una buona posizione per utilizzare qualcosa che gi\u00e0 esiste<\/a>.<\/p>\n<p>Ad ogni modo, tutto quanto sopra riguarda ancora il filtraggio delle variabili. E per quanto riguarda gli input, per\u00f2? Cio\u00e8, quelli che provengono da <code>$_POST<\/code>o <code>$_GET<\/code>. \u00c8 possibile utilizzare una strategia simile con una funzione diversa e un diverso set di filtri.<\/p>\n<p>Ma se capisci le basi presentate nell&#8217;ultimo post, questo post non sar\u00e0 molto diverso.<\/p>\n<h2>Funzioni di filtraggio PHP, parte 2: Input<\/h2>\n<p>Il filtraggio degli input viene eseguito dalla <code>filter_input<\/code>funzione. La definizione di questa specifica funzione \u00e8:<\/p>\n<blockquote>\n<p>Ottiene una specifica variabile esterna in base al nome e, facoltativamente, la filtra<\/p>\n<p><a href=\"https:\/\/www.php.net\/manual\/en\/function.filter-input.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Il manuale PHP<\/a><\/p>\n<\/blockquote>\n<p>E, come detto l&#8217;ultima volta, suona un po&#8217; strano finch\u00e9 non capisci quali sono i filtri. Fortunatamente, ne abbiamo parlato nel post precedente. E anche se questo post si concentrer\u00e0 specificamente su <code>POST<\/code>(e molto brevemente <code>GET<\/code>).<\/p>\n<p>Ci sono altri filtri per\u00f2. E questi includono:<\/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>Ad ogni modo, poich\u00e9 le due operazioni pi\u00f9 comuni che tendo a vedere in WordPress includono <code>POST<\/code>e <code>GET<\/code>, sembra importante includerle qui.<\/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=\"Dovresti utilizzare le funzioni di filtro PHP, parte 2\"><\/a><\/p>\n<p>Usare queste funzioni \u00e8 banalmente facile. Si supponga di avere un valore proveniente da qualcosa che l&#8217;utente ha fornito in un modulo e che lo stia inviando al server utilizzando una <code>POST<\/code>richiesta con una chiave come <code>firstname<\/code>.<\/p>\n<p>Il codice per verificarlo potrebbe essere simile a questo:<\/p>\n<ul>\n<li><code>filter_input(INPUT_POST, 'firstname');<\/code><\/li>\n<\/ul>\n<p>Il che \u00e8 abbastanza facile da capire perch\u00e9 prende semplicemente la chiave, la filtra e quindi restituisce un valore. E poich\u00e9 restituisce un valore, possiamo impostare una clausola di guardia prima di andare avanti con qualsiasi altro lavoro:<\/p>\n<pre><code>1if (false === filter_input(INPUT_POST, 'firstname')) {\n2\u00a0\u00a0return;\n3}\n<\/code><\/pre>\n<p>Se tutto \u00e8 andato a buon fine, possiamo andare avanti facendo tutto ci\u00f2 che dobbiamo fare con le informazioni dell&#8217;utente. Forse abbiamo bisogno di associarlo al post corrente per qualsiasi motivo:<\/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>Inoltre, puoi proteggere le informazioni ancora di pi\u00f9 attraverso l&#8217;uso dei <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vari filtri<\/a> esistenti. Questi vengono passati come terzo parametro alla <code>filter_input<\/code>funzione.<\/p>\n<h3>E che dire <code>GET<\/code>?<\/h3>\n<p>La cosa bella di questa funzione \u00e8 che, in generale, valgono le stesse regole che fanno con <code>POST<\/code>tranne che con <code>INPUT_POST<\/code>, userai <code>INPUT_GET<\/code>.<\/p>\n<p>E poi puoi elaborare il tuo codice come meglio si adatta alle esigenze del tuo progetto.<\/p>\n<h3>Sicurezza, Nonces, ecc.<\/h3>\n<p>Ricorda, questo non \u00e8 qualcosa da usare al posto della sicurezza. Questo \u00e8 puramente allo scopo di proteggere i dati prima di fare qualsiasi cosa con essi.<\/p>\n<p>Non sostituire la verifica dei valori nonce solo perch\u00e9 stai verificando i dati in modo diverso.<\/p>\n<h2>Variabili e Input<\/h2>\n<p>Ricorda, sebbene queste funzioni siano variabili molto simili e gli input siano diversi. In altre parole, non tentare di utilizzare <code>filter_var<\/code>quando si lavora con l&#8217;input proveniente dall&#8217;utente o dal browser. Usalo ogni volta che lavori con le variabili. E, allo stesso modo, usa ht e<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esistono funzioni native di WordPress per semplificare la convalida, ma ci sono anche funzioni di filtro PHP integrate per l&#8217;input dell&#8217;utente.<\/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":[896,835,804,720,844,865],"tags":[1168],"class_list":["post-232117","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-guida-per-principianti","category-php-6","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/232117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=232117"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/232117\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/235336"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=232117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=232117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=232117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}