{"id":230394,"date":"2022-12-12T12:56:00","date_gmt":"2022-12-12T09:56:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230394"},"modified":"2022-12-07T11:13:05","modified_gmt":"2022-12-07T08:13:05","slug":"szybka-wskazowka-oczysc-dane-postow-w-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/szybka-wskazowka-oczysc-dane-postow-w-wordpress\/","title":{"rendered":"Szybka wskaz\u00f3wka: Oczy\u015b\u0107 dane post\u00f3w w WordPress"},"content":{"rendered":"\n<p>Im bardziej zaczynam pr\u00f3bowa\u0107 korzysta\u0107 ze standard\u00f3w i narz\u0119dzi kodowania PSR-2, takich jak <a href=\"https:\/\/tommcfarlin.com\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a> (i tych z nim pokrewnych), tym bardziej stwierdzam, \u017ce jako\u015b\u0107 pisanego przeze mnie kodu mo\u017cna znacznie poprawi\u0107 w drobny spos\u00f3b.<\/p>\n<p>I nie chc\u0119 brzmie\u0107 sprzecznie: mam na my\u015bli to, \u017ce pomys\u0142, aby co\u015b \u201eznacznie&quot; poprawi\u0107 w \u201edrobny&#8221; spos\u00f3b, nie do ko\u0144ca pasuje, prawda?<\/p>\n<p>Ale wys\u0142uchaj mnie.<\/p>\n<p>Wyobra\u017a sobie, \u017ce jeste\u015b w stanie napisa\u0107 czysty, czytelny, \u0142atwy w utrzymaniu kod przy u\u017cyciu standard\u00f3w kodowania, kt\u00f3re s\u0105 nie tylko nowoczesne, ale tak\u017ce wbudowane w PHP, \u0142adnie si\u0119 bawi\u0105 z WordPressem i s\u0105 bardziej czytelne ni\u017c niekt\u00f3re inne sposoby, w jakie mogli\u015bmy to zrobi\u0107 przesz\u0142o\u015bci lub podczas u\u017cywania innych narz\u0119dzi do standard\u00f3w kodowania.<\/p>\n<p>Czy nie by\u0142by\u015b zainteresowany?<\/p>\n<h2>Oczy\u015b\u0107 dane pocztowe<\/h2>\n<p>We\u017amy na przyk\u0142ad ide\u0119 konieczno\u015bci oczyszczenia danych post\u00f3w w WordPressie. Oznacza to, \u017ce informacje s\u0105 wysy\u0142ane do serwera za po\u015brednictwem \u017c\u0105dania POST, s\u0105 zawarte w superglobalne $_POST i musz\u0105 zosta\u0107 oczyszczone przed wykonaniem jakiejkolwiek pracy nad nimi.<\/p>\n<p><strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/sanitize_text_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jasne, WordPress zapewnia do tego<\/a><\/strong> kilka funkcji pomocniczych \u2013 i s\u0105 one przydatne \u2013 ale PHP <strong><a href=\"https:\/\/php.net\/manual\/en\/function.filter-input.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">r\u00f3wnie\u017c zapewnia niekt\u00f3re<\/a><\/strong>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161967-61e72e3eee165.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-161967-61e72e3eee165.png\" alt=\"Szybka wskaz\u00f3wka: Oczy\u015b\u0107 dane post\u00f3w w WordPress\" ><\/a><\/p>\n<p>Pe\u0142n\u0105 tre\u015b\u0107 poni\u017cszych informacji przedstawi\u0119 w funkcji, kt\u00f3r\u0105 mo\u017cesz ponownie wykorzysta\u0107 w swoim kodzie. Ale najpierw zauwa\u017c, \u017ce b\u0119d\u0119 agresywny. Mo\u017cesz nie potrzebowa\u0107 wszystkiego, co poka\u017c\u0119.<\/p>\n<p>Oznacza to, \u017ce kod, kt\u00f3ry zobaczysz, wykona nast\u0119puj\u0105ce czynno\u015bci:<\/p>\n<ul>\n<li>pobiera zmienn\u0105 dla <a href=\"https:\/\/php.net\/manual\/en\/language.variables.superglobals.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">superglobalnej $_POST,<\/a><\/li>\n<li>sprawdza nieprawid\u0142owe kodowanie,<\/li>\n<li>koduje r\u00f3\u017cne encje, usuwa wszystkie znaczniki, usuwa podzia\u0142y wierszy, tabulatory, spacje i inne,<\/li>\n<li>cytuje ci\u0105g w cudzys\u0142owie,<\/li>\n<li>usuwa znaczniki HTML i znaczniki PHP z ci\u0105gu<\/li>\n<\/ul>\n<p>Jak powiedzia\u0142em, nie wszystko to mo\u017ce by\u0107 potrzebne, a istniej\u0105 inne sposoby radzenia sobie z niekt\u00f3rymi z tego w zale\u017cno\u015bci od tego, jak chcesz zarz\u0105dza\u0107 swoimi danymi (na przyk\u0142ad zobacz <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_kses\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_kses<\/a> ).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161967-61e72e434913b.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-161967-61e72e434913b.png\" alt=\"Szybka wskaz\u00f3wka: Oczy\u015b\u0107 dane post\u00f3w w WordPress\" ><\/a><\/p>\n<p>Czasami jednak mo\u017cesz mie\u0107 stron\u0119 ustawie\u0144, kt\u00f3r\u0105 chcesz zarz\u0105dza\u0107 przed agresywnym zapisem danych w bazie danych.<\/p>\n<pre><code>&lt;?php\npublic function sanitize(string $data): string\n{\n    return strip_tags(\n        stripslashes(\n            sanitize_text_field(\n                filter_input(INPUT_POST, $data))) );\n}<\/code><\/pre>\n<p><strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/77f82db963da726646307a8459dc2500#file-00-sanitize-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">W powy\u017cszym kodzie<\/a><\/strong> funkcja jest u\u017cywana przez przekazanie informacji znajduj\u0105cych si\u0119 w superglobalne $_POST. Nast\u0119pnie jest czyszczony agresywnie przy u\u017cyciu powy\u017cszej strategii i zwracany tak oczyszczony, jak to tylko mo\u017cliwe.<\/p>\n<p>Jak powiedzia\u0142em, mo\u017cna to zmodyfikowa\u0107, aby pasowa\u0142o do dowolnego zastosowania, ale je\u015bli szukasz jednego z naj\u0142atwiejszych i najbardziej agresywnych sposob\u00f3w oczyszczenia danych wej\u015bciowych od u\u017cytkownika, ta funkcja mo\u017ce okaza\u0107 si\u0119 przydatna w twoich wysi\u0142kach.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je\u015bli szukasz jednego z najbardziej agresywnych sposob\u00f3w oczyszczania danych posta od u\u017cytkownika, ta funkcja mo\u017ce okaza\u0107 si\u0119 przydatna<\/p>\n","protected":false},"author":1,"featured_media":236064,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,897,805,866],"tags":[1169],"class_list":["post-230394","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-php-7","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=230394"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230394\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/236064"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=230394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=230394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=230394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}