{"id":231318,"date":"2023-01-02T10:56:00","date_gmt":"2023-01-02T07:56:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231318"},"modified":"2023-01-02T10:59:44","modified_gmt":"2023-01-02T07:59:44","slug":"du-boer-anvaenda-php-filtreringsfunktioner-del-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/du-boer-anvaenda-php-filtreringsfunktioner-del-2\/","title":{"rendered":"Du b\u00f6r anv\u00e4nda PHP-filtreringsfunktioner, del 2"},"content":{"rendered":"\n<p>I <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/du-boer-anvaenda-php-filtreringsfunktioner-del-1\/\" title=\"det f\u00f6reg\u00e5ende inl\u00e4gget\">det f\u00f6reg\u00e5ende inl\u00e4gget<\/a> pratade jag om anledningarna till att anv\u00e4nda PHP-filtreringsfunktioner \u00e4r mer anv\u00e4ndbart \u00e4n inte.<\/p>\n<p>Kort sagt, att g\u00f6ra det hj\u00e4lper till att ge en niv\u00e5 av validering som \u00e4r inbyggd i spr\u00e5ket s\u00e5 att vi inte beh\u00f6ver skriva om n\u00e5got. Naturligtvis finns det varningar.<\/p>\n<p>Till exempel, om du m\u00e5ste validera ett v\u00e4rde som \u00e4r av icke-latinska tecken, d\u00e5 kommer du att beh\u00f6va g\u00f6ra det ensam och implementera validering med kanske ett regulj\u00e4rt uttryck.<\/p>\n<p>Men om du anv\u00e4nder e-postadresser, webbadresser, nummer, IP-adresser och s\u00e5 m\u00e5nga fler saker, s\u00e5 \u00e4r du i <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.validate.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">en bra position att anv\u00e4nda n\u00e5got som redan finns<\/a>.<\/p>\n<p>Hur som helst, allt ovanst\u00e5ende handlar fortfarande om att filtrera variabler. Men hur \u00e4r det med inputs? Det vill s\u00e4ga de som kommer fr\u00e5n <code>$_POST<\/code>eller <code>$_GET<\/code>. Det \u00e4r m\u00f6jligt att anv\u00e4nda en liknande strategi med en annan funktion och annan filterupps\u00e4ttning.<\/p>\n<p>Men om du f\u00f6rst\u00e5r grunderna som presenterades i det f\u00f6rra inl\u00e4gget, kommer det h\u00e4r inl\u00e4gget inte att vara mycket annorlunda.<\/p>\n<h2>PHP-filtreringsfunktioner, del 2: Ing\u00e5ngar<\/h2>\n<p>Filtrering av ing\u00e5ngar g\u00f6rs av <code>filter_input<\/code>funktionen. Definitionen f\u00f6r denna specifika funktion \u00e4r:<\/p>\n<blockquote>\n<p>H\u00e4mtar en specifik extern variabel efter namn och filtrerar den valfritt<\/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-manualen<\/a><\/p>\n<\/blockquote>\n<p>Och, som n\u00e4mnde f\u00f6rra g\u00e5ngen, detta l\u00e5ter lite konstigt tills du f\u00f6rst\u00e5r vad filtren \u00e4r. Som tur var tog vi upp detta i f\u00f6rra inl\u00e4gget. Och \u00e4ven om det h\u00e4r inl\u00e4gget kommer att fokusera specifikt p\u00e5 <code>POST<\/code>(och mycket kortfattat <code>GET<\/code>).<\/p>\n<p>Det finns dock andra filter. Och dessa inkluderar:<\/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>Hur som helst, eftersom de tv\u00e5 vanligaste operationerna som jag brukar se i WordPress inkluderar <code>POST<\/code>och <code>GET<\/code>, s\u00e5 verkar det viktigt att ta med dessa tv\u00e5 h\u00e4r.<\/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=\"Du b\u00f6r anv\u00e4nda PHP-filtreringsfunktioner, del 2\"><\/a><\/p>\n<p>Att anv\u00e4nda dessa funktioner \u00e4r trivialt enkelt. Anta att du har ett v\u00e4rde som kommer fr\u00e5n n\u00e5got som anv\u00e4ndaren har angett i ett formul\u00e4r och att de skickar det till servern med en <code>POST<\/code>beg\u00e4ran med en nyckel som <code>firstname<\/code>.<\/p>\n<p>Koden f\u00f6r att verifiera den kan se ut ungef\u00e4r s\u00e5 h\u00e4r:<\/p>\n<ul>\n<li><code>filter_input(INPUT_POST, 'firstname');<\/code><\/li>\n<\/ul>\n<p>Vilket \u00e4r l\u00e4tt nog att f\u00f6rst\u00e5 eftersom det helt enkelt tar nyckeln, filtrerar den och sedan returnerar ett v\u00e4rde. Och eftersom det returnerar ett v\u00e4rde kan vi st\u00e4lla in en skyddsklausul innan vi g\u00e5r vidare med n\u00e5got mer arbete:<\/p>\n<pre><code>1if (false === filter_input(INPUT_POST, 'firstname')) {\n2\u00a0\u00a0return;\n3}\n<\/code><\/pre>\n<p>Om allt checkar ut kan vi g\u00e5 vidare och g\u00f6ra vad vi \u00e4n beh\u00f6ver g\u00f6ra med anv\u00e4ndarinformationen. Kanske m\u00e5ste vi associera det med det aktuella inl\u00e4gget av n\u00e5gon anledning:<\/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>Vidare kan du s\u00e4kra information \u00e4nnu mer genom att anv\u00e4nda de <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">olika filter<\/a> som finns. Dessa skickas som en tredje parameter till <code>filter_input<\/code>funktionen.<\/p>\n<h3>Och vad s\u00e4gs om <code>GET<\/code>?<\/h3>\n<p>Det fina med den h\u00e4r funktionen \u00e4r att, generellt sett, g\u00e4ller samma regler som de g\u00f6r med <code>POST<\/code>f\u00f6rutom att <code>INPUT_POST<\/code>du anv\u00e4nder ist\u00e4llet f\u00f6r att anv\u00e4nda <code>INPUT_GET<\/code>.<\/p>\n<p>Och sedan kan du arbeta igenom din kod hur den b\u00e4st passar ditt projekts behov.<\/p>\n<h3>S\u00e4kerhet, Nonces, etc.<\/h3>\n<p>Kom ih\u00e5g att detta inte \u00e4r n\u00e5got som ska anv\u00e4ndas i st\u00e4llet f\u00f6r s\u00e4kerhet. Detta \u00e4r enbart i syfte att s\u00e4kra data innan du g\u00f6r n\u00e5got med det.<\/p>\n<p>Ers\u00e4tt inte verifieringen av nonce-v\u00e4rden bara f\u00f6r att du verifierar data p\u00e5 ett annat s\u00e4tt.<\/p>\n<h2>Variabler och ing\u00e5ngar<\/h2>\n<p>Kom ih\u00e5g att \u00e4ven om dessa funktioner \u00e4r v\u00e4ldigt lika variabler och indata \u00e4r olika. Med andra ord, f\u00f6rs\u00f6k inte anv\u00e4nda <code>filter_var<\/code>n\u00e4r du arbetar med input fr\u00e5n anv\u00e4ndaren eller webbl\u00e4saren. Anv\u00e4nd den n\u00e4r du arbetar med variabler. Och p\u00e5 liknande s\u00e4tt, anv\u00e4nd ht e<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Det finns inbyggda WordPress-funktioner f\u00f6r att g\u00f6ra validering enklare, men det finns ocks\u00e5 inbyggda PHP-filtreringsfunktioner f\u00f6r anv\u00e4ndarinmatning.<\/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":[838,848,901,807,724,868],"tags":[1173],"class_list":["post-231318","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-handledningar","category-koda","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=231318"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231318\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/235336"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=231318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=231318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=231318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}