{"id":231359,"date":"2023-01-02T10:37:00","date_gmt":"2023-01-02T07:37:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231359"},"modified":"2023-01-02T10:40:01","modified_gmt":"2023-01-02T07:40:01","slug":"peaksite-kasutama-php-filtreerimisfunktsioone-2-osa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/peaksite-kasutama-php-filtreerimisfunktsioone-2-osa\/","title":{"rendered":"Peaksite kasutama PHP filtreerimisfunktsioone, 2. osa"},"content":{"rendered":"\n<p>Eelmises <a href=\"https:\/\/wordpress.mediadoma.com\/et\/peaksite-kasutama-php-filtreerimisfunktsioone-1-osa\/\" title=\"postituses\">postituses<\/a> r\u00e4\u00e4kisin p\u00f5hjustest, miks PHP filtreerimisfunktsioonide kasutamine on pigem kasulik kui mitte.<\/p>\n<p>L\u00fchidalt, see aitab tagada keele sisseehitatud valideerimise taseme, et me ei peaks midagi \u00fcmber kirjutama. Loomulikult on hoiatusi.<\/p>\n<p>N\u00e4iteks kui peate kinnitama mitte-ladina t\u00e4htedega v\u00e4\u00e4rtust, peate seda tegema \u00fcksi ja rakendama valideerimist v\u00f5ib-olla regulaaravaldise abil.<\/p>\n<p>Kui aga kasutate e-posti aadresse, URL-e, numbreid, IP-aadresse ja palju muud, siis on teil <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.validate.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hea v\u00f5imalus kasutada midagi, mis on juba olemas<\/a>.<\/p>\n<p>Igatahes puudutab k\u00f5ik eelnev ikkagi muutujate filtreerimist. Aga sisendid? See t\u00e4hendab, et need, mis p\u00e4rinevad <code>$_POST<\/code>v\u00f5i <code>$_GET<\/code>. Sarnast strateegiat on v\u00f5imalik kasutada erineva funktsiooni ja erineva filtrikomplektiga.<\/p>\n<p>Aga kui sa m\u00f5istad viimases postituses esitatud p\u00f5hit\u00f5desid, siis see postitus v\u00e4ga erinev ei ole.<\/p>\n<h2>PHP filtreerimisfunktsioonid, 2. osa: sisendid<\/h2>\n<p>Sisendite filtreerimine toimub <code>filter_input<\/code>funktsiooni abil. Selle konkreetse funktsiooni m\u00e4\u00e4ratlus on j\u00e4rgmine:<\/p>\n<blockquote>\n<p>Hangib konkreetse v\u00e4lismuutuja nime j\u00e4rgi ja valikuliselt filtreerib selle<\/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\u00e4siraamat<\/a><\/p>\n<\/blockquote>\n<p>Ja nagu viimati mainitud, k\u00f5lab see pisut veidralt, kuni m\u00f5istate, mis filtrid on. \u00d5nneks k\u00e4sitlesime seda eelmises postituses. Ja kuigi see postitus keskendub konkreetselt <code>POST<\/code>(ja v\u00e4ga l\u00fchidalt <code>GET<\/code>).<\/p>\n<p>Samas on ka teisi filtreid. Ja nende hulka kuuluvad:<\/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>Igatahes, kuna kaks k\u00f5ige levinumat toimingut, mida WordPressis n\u00e4gema kipun, on <code>POST<\/code>ja <code>GET<\/code>, siis tundub oluline need kaks siia lisada.<\/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=\"Peaksite kasutama PHP filtreerimisfunktsioone, 2. osa\"><\/a><\/p>\n<p>Nende funktsioonide kasutamine on triviaalselt lihtne. Oletagem, et teil on v\u00e4\u00e4rtus, mis p\u00e4rineb millestki, mille kasutaja on vormis esitanud, ja nad saadavad selle serverisse, kasutades <code>POST<\/code>p\u00e4ringut v\u00f5tmega, n\u00e4iteks <code>firstname<\/code>.<\/p>\n<p>Kood selle kinnitamiseks v\u00f5ib v\u00e4lja n\u00e4ha umbes selline:<\/p>\n<ul>\n<li><code>filter_input(INPUT_POST, 'firstname');<\/code><\/li>\n<\/ul>\n<p>Mida on piisavalt lihtne m\u00f5ista, sest see v\u00f5tab lihtsalt v\u00f5tme, filtreerib selle ja tagastab seej\u00e4rel v\u00e4\u00e4rtuse. Ja kuna see tagastab v\u00e4\u00e4rtuse, saame enne t\u00f6\u00f6 j\u00e4tkamist seadistada kaitseklausli:<\/p>\n<pre><code>1if (false === filter_input(INPUT_POST, 'firstname')) {\n2\u00a0\u00a0return;\n3}\n<\/code><\/pre>\n<p>Kui k\u00f5ik on kontrollitud, saame edasi liikuda ja teha k\u00f5ik, mida vajame kasutajateabega. V\u00f5ib-olla peame selle mingil p\u00f5hjusel praeguse postitusega seostama:<\/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>Lisaks saate <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">erinevate olemasolevate filtrite<\/a> abil teavet veelgi paremini kaitsta. Need edastatakse <code>filter_input<\/code>funktsioonile kolmanda parameetrina.<\/p>\n<h3>Ja mis sellest <code>GET<\/code>?<\/h3>\n<p>Selle funktsiooni hea k\u00fclg on see, et \u00fcldiselt kehtivad samad reeglid, mis kehtivad ka selle funktsiooni puhul, <code>POST<\/code>v\u00e4lja arvatud juhul, kui kasutate <code>INPUT_POST<\/code>, peate kasutama <code>INPUT_GET<\/code>.<\/p>\n<p>Seej\u00e4rel saate oma koodi l\u00e4bi t\u00f6\u00f6tada nii, nagu see teie projekti vajadustele k\u00f5ige paremini sobib.<\/p>\n<h3>Turvalisus, Nonces jne.<\/h3>\n<p>Pidage meeles, et seda ei saa kasutada turvalisuse asemel. See on m\u00f5eldud \u00fcksnes andmete kaitsmiseks, enne kui nendega midagi ette v\u00f5tate.<\/p>\n<p>\u00c4rge asendage mitte-v\u00e4\u00e4rtuste kontrollimist lihtsalt seet\u00f5ttu, et kontrollite andmeid erinevalt.<\/p>\n<h2>Muutujad ja sisendid<\/h2>\n<p>Pidage meeles, et kuigi need funktsioonid on v\u00e4ga sarnased muutujad ja sisendid erinevad. Teisis\u00f5nu, \u00e4rge proovige seda kasutada, <code>filter_var<\/code>kui t\u00f6\u00f6tate kasutajalt v\u00f5i brauserist p\u00e4rineva sisendiga. Kasutage seda alati, kui t\u00f6\u00f6tate muutujatega. Ja samamoodi kasutage 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>Valideerimise h\u00f5lbustamiseks on WordPressi natiivsed funktsioonid, kuid kasutaja sisestamiseks on ka sisseehitatud PHP filtreerimisfunktsioonid.<\/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":[718,833,894,842,802,863],"tags":[1165],"class_list":["post-231359","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-juhend-algajatele","category-kood","category-opetused","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=231359"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231359\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/235336"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}