{"id":231910,"date":"2023-01-02T10:40:00","date_gmt":"2023-01-02T07:40:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231910"},"modified":"2023-01-02T10:41:56","modified_gmt":"2023-01-02T07:41:56","slug":"sinun-pitaeisi-kaeyttaeae-php-suodatusfunktioita-osa-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/sinun-pitaeisi-kaeyttaeae-php-suodatusfunktioita-osa-1\/","title":{"rendered":"Sinun pit\u00e4isi k\u00e4ytt\u00e4\u00e4 PHP-suodatusfunktioita, osa 1"},"content":{"rendered":"\n<p>Olen puhunut <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/url-osoitteiden-puhdistaminen-wordpressissae\/\" title=\"aiemmissa viesteiss\u00e4ni\">aiemmissa viesteiss\u00e4ni<\/a> tietojen puhdistamisesta WordPressiss\u00e4. T\u00e4m\u00e4 aihe ei ole t\u00e4rke\u00e4 vain niille meist\u00e4, jotka ty\u00f6skentelemme ratkaisujen rakentamisessa muille WordPressiss\u00e4, vaan my\u00f6s niille, jotka kirjoittavat koodia, joka on suoraan vuorovaikutuksessa tietokannan kanssa PHP:n kautta.<\/p>\n<p>Toki WordPressiss\u00e4 on alkuper\u00e4isi\u00e4 toimintoja, jotka helpottavat t\u00e4t\u00e4 prosessia, mutta on my\u00f6s sis\u00e4\u00e4nrakennettuja PHP-suodatustoimintoja, jotka auttavat t\u00e4ss\u00e4. Nimitt\u00e4in <code>filter_var<\/code>ja <code>filter_input<\/code>ja n\u00e4m\u00e4 ovat asioita, jotka mielest\u00e4ni ovat hy\u00f6dyllisi\u00e4 PHP-kehitt\u00e4jille.<\/p>\n<h2>PHP-suodatusfunktiot, osa 1: Muuttujat<\/h2>\n<p>Muuttujien suodatus tehd\u00e4\u00e4n osuvasti nimetyll\u00e4 <code>filter_var<\/code>funktiolla. Virallinen m\u00e4\u00e4ritelm\u00e4 on:<\/p>\n<blockquote>\n<p>Suodattaa muuttujan m\u00e4\u00e4ritetyll\u00e4 suodattimella<\/p>\n<p><a href=\"https:\/\/www.php.net\/manual\/en\/function.filter-var.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP k\u00e4sikirja<\/a><\/p>\n<\/blockquote>\n<p>Itse m\u00e4\u00e4ritelm\u00e4 saattaa olla hieman py\u00f6re\u00e4, varsinkin jos olet vasta aloittamassa PHP:n tai suodatustoimintojen k\u00e4ytt\u00f6\u00e4. T\u00e4ss\u00e4 m\u00e4\u00e4ritelm\u00e4ss\u00e4 on t\u00e4rke\u00e4\u00e4 ymm\u00e4rt\u00e4\u00e4, mik\u00e4 suodatin todellisuudessa on.<\/p>\n<p>Joten jos olet tottunut ty\u00f6skentelem\u00e4\u00e4n esimerkiksi loogisten arvojen, kokonaislukujen, s\u00e4hk\u00f6postiosoitteiden ja niin edelleen (ja kuka ei ole?), niin se on j\u00e4rkev\u00e4mp\u00e4\u00e4, eik\u00f6 niin? Toisin sanoen, jos sinun on annettava jonkinlainen vahvistus t\u00e4m\u00e4ntyyppisten arvojen ymp\u00e4rille, t\u00e4m\u00e4 voi auttaa.<\/p>\n<p>Hienoa on, ett\u00e4 riippumatta siit\u00e4, mit\u00e4 suodatat, se <code>filter_var<\/code>palaa <code>false<\/code>aina, kun suodatin ep\u00e4onnistuu.<\/p>\n<p>Oletetaan, ett\u00e4 haluat suodattaa s\u00e4hk\u00f6postiosoitteen, niin voit tehd\u00e4 jotain n\u00e4in:<\/p>\n<ul>\n<li><code>filter_var($emailAddress,\u00a0FILTER_VALIDATE_EMAIL)<\/code>;<\/li>\n<\/ul>\n<p>Se ei tietenk\u00e4\u00e4n ole ilman joitain vikoja. Se ei esimerkiksi vahvista muita kuin latinalaisia \u200b\u200bverkkotunnuksia. T\u00e4st\u00e4 lis\u00e4\u00e4 hetken aikaa.<\/p>\n<p>Joka tapauksessa, ehk\u00e4 haluat suodattaa muun tyyppisi\u00e4 arvoja:<\/p>\n<ul>\n<li><code>filter_var($url,\u00a0FILTER_VALIDATE_URL)<\/code><\/li>\n<li><code>filter_var('1001',\u00a0FILTER_VALIDATE_INT)<\/code><\/li>\n<\/ul>\n<p>Ja voit tehd\u00e4 niist\u00e4 monimutkaisempia tarpeidesi mukaan. Oletetaan esimerkiksi, ett\u00e4 sinun on m\u00e4\u00e4ritett\u00e4v\u00e4, onko IP julkinen. Sitten voit k\u00e4ytt\u00e4\u00e4 jotain yksityiskohtaisempaa, kuten t\u00e4m\u00e4:<\/p>\n<ul>\n<li><code>filter_var($ip,\u00a0FILTER_VALIDATE_IP,\u00a0FILTER_FLAG_NO_PRIV_RANGE\u00a0|\u00a0FILTER_FLAG_NO_RES_RANGE)<\/code><\/li>\n<\/ul>\n<p>Asia on, ett\u00e4 on t\u00e4rke\u00e4\u00e4 tiet\u00e4\u00e4, miten <code>filter_var<\/code>toimii ja mit\u00e4 suodattimia on saatavilla. Siin\u00e4 t\u00e4m\u00e4n hy\u00f6dyllisyys todella tulee esiin. T\u00e4t\u00e4 varten suosittelen lukemaan <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.validate.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP:n tarjoamat vahvistussuodattimet.<\/a><\/p>\n<p>Muista lopuksi yll\u00e4 oleva huomautus ei-latinalaisista verkkotunnuksista, joissa on s\u00e4hk\u00f6postiosoitteet? Joissakin tapauksissa sinun on tarkistettava, mit\u00e4 oppaassa on sanottu tietyist\u00e4 URL-osoitteista, verkkotunnuksista ja niin edelleen, ennen kuin k\u00e4yt\u00e4t niit\u00e4.<\/p>\n<p>N\u00e4iss\u00e4 tapauksissa <code>filter_var<\/code>se ei valitettavasti aina toimi. Sen sijaan s\u00e4\u00e4nn\u00f6lliset lausekkeet voivat olla sopiva korvaus.<\/p>\n<h2>Ent\u00e4 tulojen suodatus?<\/h2>\n<p>Jos sinulla on kokemusta my\u00f6s muuttujien kanssa ty\u00f6skentelyst\u00e4, kuten <code>$_GET<\/code>ja <code>$_POST<\/code>sitten on toinen suodatustoiminto erityisesti sit\u00e4 varten.<\/p>\n<p>Ja seuraavassa postauksessa k\u00e4yn l\u00e4pi, kuinka parhaiten k\u00e4ytt\u00e4\u00e4 niit\u00e4 paikoillaan, joita monet meist\u00e4 perinteisesti k\u00e4ytt\u00e4v\u00e4t.<\/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.<\/p>\n","protected":false},"author":1,"featured_media":236152,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[782,750,719,895,834,843,803,864],"tags":[1166],"class_list":["post-231910","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-avoimen-laehdekoodin-ohjelmisto","category-avoin-laehdekoodi","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\/231910","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=231910"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231910\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/236152"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}