{"id":231260,"date":"2023-01-02T11:08:00","date_gmt":"2023-01-02T08:08:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231260"},"modified":"2023-01-02T11:09:49","modified_gmt":"2023-01-02T08:09:49","slug":"powinienes-uzywac-funkcji-filtrowania-php-czesc-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/powinienes-uzywac-funkcji-filtrowania-php-czesc-1\/","title":{"rendered":"Powiniene\u015b u\u017cywa\u0107 funkcji filtrowania PHP, cz\u0119\u015b\u0107 1"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/oczyszczanie-adresow-url-w-wordpress\/\" title=\"W poprzednich wpisach\">W poprzednich wpisach<\/a> pisa\u0142em o oczyszczaniu danych w WordPressie. Jest to temat, kt\u00f3ry jest wa\u017cny nie tylko dla tych z nas, kt\u00f3rzy pracuj\u0105 nad budowaniem rozwi\u0105za\u0144 dla innych w WordPressie, ale tak\u017ce dla tych, kt\u00f3rzy pisz\u0105 kod, kt\u00f3ry b\u0119dzie bezpo\u015brednio komunikowa\u0142 si\u0119 z baz\u0105 danych za po\u015brednictwem PHP.<\/p>\n<p>Oczywi\u015bcie istniej\u0105 natywne funkcje WordPressa, kt\u00f3re u\u0142atwiaj\u0105 ten proces, ale s\u0105 te\u017c wbudowane funkcje filtrowania PHP, kt\u00f3re w tym pomagaj\u0105. Mianowicie <code>filter_var<\/code>i <code>filter_input<\/code>i s\u0105 to rzeczy, kt\u00f3re moim zdaniem s\u0105 przydatne dla programist\u00f3w PHP.<\/p>\n<h2>Funkcje filtrowania PHP, cz\u0119\u015b\u0107 1: Zmienne<\/h2>\n<p>Filtrowanie zmiennych odbywa si\u0119 za pomoc\u0105 trafnie nazwanej <code>filter_var<\/code>funkcji. Oficjalna definicja to:<\/p>\n<blockquote>\n<p>Filtruje zmienn\u0105 z okre\u015blonym filtrem<\/p>\n<p><a href=\"https:\/\/www.php.net\/manual\/en\/function.filter-var.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Podr\u0119cznik PHP<\/a><\/p>\n<\/blockquote>\n<p>Sama definicja mo\u017ce brzmie\u0107 troch\u0119 w k\u00f3\u0142ko, zw\u0142aszcza je\u015bli dopiero zaczynasz prac\u0119 z PHP lub korzystasz z funkcji filtruj\u0105cych. Wa\u017cn\u0105 rzecz\u0105 do zrozumienia w tej definicji jest to, czym w\u0142a\u015bciwie jest filtr.<\/p>\n<p>Wi\u0119c je\u015bli jeste\u015b przyzwyczajony do pracy z, powiedzmy, warto\u015bciami boolowskimi, liczbami ca\u0142kowitymi, adresami e-mail i tak dalej (a kto nie jest?), to ma to wi\u0119cej sensu, prawda? Oznacza to, \u017ce je\u015bli musisz zapewni\u0107 jaki\u015b rodzaj walidacji wok\u00f3\u0142 tych typ\u00f3w warto\u015bci, mo\u017ce to pom\u00f3c.<\/p>\n<p>Wspania\u0142e jest to, \u017ce niezale\u017cnie od tego, co filtrujesz, <code>filter_var<\/code>powr\u00f3ci <code>false<\/code>, gdy filtr si\u0119 nie powiedzie.<\/p>\n<p>Za\u0142\u00f3\u017cmy, \u017ce chcesz filtrowa\u0107 adres e-mail, a nast\u0119pnie mo\u017cesz zrobi\u0107 co\u015b takiego:<\/p>\n<ul>\n<li><code>filter_var($emailAddress,\u00a0FILTER_VALIDATE_EMAIL)<\/code>;<\/li>\n<\/ul>\n<p>Oczywi\u015bcie nie oby\u0142o si\u0119 bez kilku b\u0142\u0119d\u00f3w. Na przyk\u0142ad nie weryfikuje domen innych ni\u017c \u0142aci\u0144skie. Wi\u0119cej o tym za chwil\u0119.<\/p>\n<p>W ka\u017cdym razie mo\u017ce chcesz filtrowa\u0107 inne typy warto\u015bci:<\/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>I mo\u017cesz je bardziej skomplikowa\u0107 w zale\u017cno\u015bci od swoich potrzeb. Za\u0142\u00f3\u017cmy na przyk\u0142ad, \u017ce musisz okre\u015bli\u0107, czy adres IP jest publiczny. Nast\u0119pnie mo\u017cesz u\u017cy\u0107 czego\u015b bardziej skomplikowanego, takiego jak to:<\/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>Chodzi o to, \u017ce wa\u017cne jest, aby wiedzie\u0107, jak <code>filter_var<\/code>dzia\u0142a, a tak\u017ce jakie filtry s\u0105 dost\u0119pne. W\u0142a\u015bnie tam pojawia si\u0119 u\u017cyteczno\u015b\u0107 tego rozwi\u0105zania. W tym celu gor\u0105co polecam zapoznanie si\u0119 <a href=\"https:\/\/www.php.net\/manual\/en\/filter.filters.validate.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">z filtrami walidacji, kt\u00f3re oferuje PHP.<\/a><\/p>\n<p>Na koniec pami\u0119tasz powy\u017csz\u0105 notatk\u0119 o domenach innych ni\u017c \u0142aci\u0144skie z adresami e-mail? Jest kilka takich przypadk\u00f3w z pewnymi funkcjami, w kt\u00f3rych musisz sprawdzi\u0107, co podr\u0119cznik ma do powiedzenia na temat okre\u015blonych adres\u00f3w URL, domen itd., zanim z nich skorzystasz.<\/p>\n<p>W takich przypadkach niestety <code>filter_var<\/code>mo\u017ce nie zawsze dzia\u0142a\u0107. Zamiast tego odpowiednim zamiennikiem mog\u0105 by\u0107 wyra\u017cenia regularne.<\/p>\n<h2>A co z filtrowaniem danych wej\u015bciowych?<\/h2>\n<p>Je\u015bli masz do\u015bwiadczenie r\u00f3wnie\u017c w pracy ze zmiennymi, takimi jak <code>$_GET<\/code>a <code>$_POST<\/code>, istnieje inna funkcja filtruj\u0105ca specjalnie do tego celu.<\/p>\n<p>A w nast\u0119pnym po\u015bcie om\u00f3wi\u0119, jak najlepiej wykorzysta\u0107 te w miejscu, z kt\u00f3rych tak wielu z nas tradycyjnie korzysta.<\/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>Istniej\u0105 natywne funkcje WordPressa u\u0142atwiaj\u0105ce walidacj\u0119, ale s\u0105 te\u017c wbudowane funkcje filtrowania PHP.<\/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":[721,897,784,752,805,836,845,866],"tags":[1169],"class_list":["post-231260","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-oprogramowanie-open-source","category-otwarte-zrodlo","category-php-7","category-przewodnik-dla-poczatkujacych","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231260","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=231260"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231260\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/236152"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=231260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=231260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=231260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}