{"id":231919,"date":"2023-01-02T10:38:00","date_gmt":"2023-01-02T07:38:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231919"},"modified":"2023-01-02T10:42:02","modified_gmt":"2023-01-02T07:42:02","slug":"sinun-pitaeisi-kaeyttaeae-php-suodatusfunktioita-osa-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/sinun-pitaeisi-kaeyttaeae-php-suodatusfunktioita-osa-2\/","title":{"rendered":"Sinun pit\u00e4isi k\u00e4ytt\u00e4\u00e4 PHP-suodatusfunktioita, osa 2"},"content":{"rendered":"\n<p>Edellisess\u00e4 <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/sinun-pitaeisi-kaeyttaeae-php-suodatusfunktioita-osa-1\/\" title=\"viestiss\u00e4\">viestiss\u00e4<\/a> puhuin syist\u00e4 PHP-suodatustoimintojen k\u00e4ytt\u00f6 on hy\u00f6dyllisemp\u00e4\u00e4 kuin ei.<\/p>\n<p>Lyhyesti sanottuna t\u00e4m\u00e4 auttaa tarjoamaan kieleen sis\u00e4\u00e4nrakennetun vahvistustason, jotta meid\u00e4n ei tarvitse kirjoittaa jotain uudelleen. Luonnollisesti on varoituksia.<\/p>\n<p>Jos esimerkiksi sinun on vahvistettava arvo, joka koostuu muista kuin latinalaisista merkeist\u00e4, sinun on teht\u00e4v\u00e4 se yksin ja suoritettava vahvistus ehk\u00e4 s\u00e4\u00e4nn\u00f6llisell\u00e4 lausekkeella.<\/p>\n<p>Mutta jos k\u00e4yt\u00e4t s\u00e4hk\u00f6postiosoitteita, URL-osoitteita, numeroita, IP-osoitteita ja monia muita asioita, sinulla <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.validate.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">on hyv\u00e4t mahdollisuudet k\u00e4ytt\u00e4\u00e4 jotain jo olemassa olevaa<\/a>.<\/p>\n<p>Joka tapauksessa kaikki yll\u00e4 oleva koskee edelleen muuttujien suodattamista. Ent\u00e4 tulot kuitenkin? Eli ne, jotka ovat per\u00e4isin <code>$_POST<\/code>tai <code>$_GET<\/code>. On mahdollista k\u00e4ytt\u00e4\u00e4 samanlaista strategiaa eri toiminnolla ja eri suodatinsarjalla.<\/p>\n<p>Mutta jos ymm\u00e4rr\u00e4t viimeisess\u00e4 viestiss\u00e4 esitetyt perusteet, t\u00e4m\u00e4 viesti ei ole kovin erilainen.<\/p>\n<h2>PHP-suodatusfunktiot, osa 2: Tulot<\/h2>\n<p>Tulojen suodatus tapahtuu <code>filter_input<\/code>toiminnolla. T\u00e4m\u00e4n funktion m\u00e4\u00e4ritelm\u00e4 on:<\/p>\n<blockquote>\n<p>Hakee tietyn ulkoisen muuttujan nimen perusteella ja valinnaisesti suodattaa sen<\/p>\n<p><a href=\"https:\/\/www.php.net\/manual\/en\/function.filter-input.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP k\u00e4sikirja<\/a><\/p>\n<\/blockquote>\n<p>Ja kuten viime kerralla mainittiin, t\u00e4m\u00e4 kuulostaa hieman oudolta, kunnes ymm\u00e4rr\u00e4t, mit\u00e4 suodattimet ovat. Onneksi k\u00e4siteltiin t\u00e4t\u00e4 edellisess\u00e4 postauksessa. Ja vaikka t\u00e4m\u00e4 viesti keskittyy erityisesti <code>POST<\/code>(ja hyvin lyhyesti <code>GET<\/code>).<\/p>\n<p>On kuitenkin muitakin suodattimia. Ja n\u00e4ihin kuuluvat:<\/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>Joka tapauksessa, koska kaksi yleisint\u00e4 toimintoa, jotka minulla on tapana n\u00e4hd\u00e4 WordPressiss\u00e4, ovat <code>POST<\/code>ja <code>GET<\/code>, n\u00e4ytt\u00e4\u00e4 t\u00e4rke\u00e4lt\u00e4 sis\u00e4llytt\u00e4\u00e4 n\u00e4m\u00e4 kaksi t\u00e4h\u00e4n.<\/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=\"Sinun pit\u00e4isi k\u00e4ytt\u00e4\u00e4 PHP-suodatusfunktioita, osa 2\"><\/a><\/p>\n<p>N\u00e4iden toimintojen k\u00e4ytt\u00e4minen on triviaalisen helppoa. Oletetaan, ett\u00e4 sinulla on arvo, joka tulee jostakin, jonka k\u00e4ytt\u00e4j\u00e4 on antanut lomakkeessa, ja h\u00e4n l\u00e4hett\u00e4\u00e4 sen palvelimelle k\u00e4ytt\u00e4m\u00e4ll\u00e4 <code>POST<\/code>pyynt\u00f6\u00e4 avaimella, kuten <code>firstname<\/code>.<\/p>\n<p>Sen vahvistava koodi voi n\u00e4ytt\u00e4\u00e4 t\u00e4lt\u00e4:<\/p>\n<ul>\n<li><code>filter_input(INPUT_POST, 'firstname');<\/code><\/li>\n<\/ul>\n<p>Mik\u00e4 on tarpeeksi helppo ymm\u00e4rt\u00e4\u00e4, koska se yksinkertaisesti ottaa avaimen, suodattaa sen ja palauttaa sitten arvon. Ja koska se palauttaa arvon, voimme asettaa suojalausekkeen ennen kuin jatkamme ty\u00f6skentely\u00e4:<\/p>\n<pre><code>1if (false === filter_input(INPUT_POST, 'firstname')) {\n2\u00a0\u00a0return;\n3}\n<\/code><\/pre>\n<p>Jos kaikki on kunnossa, voimme siirty\u00e4 eteenp\u00e4in ja tehd\u00e4 mit\u00e4 tahansa k\u00e4ytt\u00e4j\u00e4tiedoilla. Ehk\u00e4 meid\u00e4n on yhdistett\u00e4v\u00e4 se nykyiseen viestiin jostain syyst\u00e4:<\/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>Lis\u00e4ksi voit suojata tietoja entist\u00e4 enemm\u00e4n k\u00e4ytt\u00e4m\u00e4ll\u00e4 erilaisia \u200b\u200bolemassa olevia <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">suodattimia .<\/a> N\u00e4m\u00e4 v\u00e4litet\u00e4\u00e4n kolmantena parametrina <code>filter_input<\/code>funktiolle.<\/p>\n<h3>Ja Ent\u00e4 <code>GET<\/code>?<\/h3>\n<p>Hienoa t\u00e4ss\u00e4 funktiossa on, ett\u00e4 yleisesti ottaen samat s\u00e4\u00e4nn\u00f6t p\u00e4tev\u00e4t kuin ne p\u00e4tev\u00e4t, <code>POST<\/code>paitsi ett\u00e4 <code>INPUT_POST<\/code>k\u00e4yt\u00e4t <code>INPUT_GET<\/code>.<\/p>\n<p>Ja sitten voit ty\u00f6st\u00e4\u00e4 koodiasi projektisi tarpeisiin parhaiten sopivalla tavalla.<\/p>\n<h3>Turvallisuus, nonces jne.<\/h3>\n<p>Muista, ett\u00e4 t\u00e4t\u00e4 ei saa k\u00e4ytt\u00e4\u00e4 turvallisuuden sijasta. T\u00e4m\u00e4 on vain tietojen suojaamista varten ennen kuin teet mit\u00e4\u00e4n niill\u00e4.<\/p>\n<p>\u00c4l\u00e4 vaihda nonce-arvojen vahvistusta vain siksi, ett\u00e4 vahvistat tiedot eri tavalla.<\/p>\n<h2>Muuttujat ja sy\u00f6tteet<\/h2>\n<p>Muista, vaikka n\u00e4m\u00e4 funktiot ovat hyvin samankaltaisia \u200b\u200bmuuttujia ja sy\u00f6tteet ovat erilaisia. Toisin sanoen, \u00e4l\u00e4 yrit\u00e4 k\u00e4ytt\u00e4\u00e4, <code>filter_var<\/code>kun ty\u00f6skentelet k\u00e4ytt\u00e4j\u00e4lt\u00e4 tai selaimelta tulevan sy\u00f6tteen kanssa. K\u00e4yt\u00e4 sit\u00e4 aina, kun ty\u00f6skentelet muuttujien kanssa. Ja vastaavasti k\u00e4yt\u00e4 ht e<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPressiss\u00e4 on alkuper\u00e4isi\u00e4 toimintoja, jotka helpottavat validointia, mutta on my\u00f6s sis\u00e4\u00e4nrakennettuja PHP-suodatustoimintoja k\u00e4ytt\u00e4j\u00e4n sy\u00f6tt\u00e4mist\u00e4 varten.<\/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":[719,895,834,843,803,864],"tags":[1166],"class_list":["post-231919","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opas-aloittelijoille","category-opetusohjelmia","category-php-5","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231919","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=231919"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231919\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/235336"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231919"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231919"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}