Přejít k navigační liště

Zdroják » Zprávičky » PHP 5.2 a filter: konec $_GET?

PHP 5.2 a filter: konec $_GET?

Zprávičky ‐ ‐ PHP, Různé ‐

Nálepky:

Programátoři, kteří používají PHP již nějaký čas, pamatují už víc doporučených způsobů, jak získat hodnoty předané v GET či POST požadavku – od $HTTP_GET_VARS přes doporučované a opět zatracované proměnné až k superglobálnímu $_GET. Vydrželo s námi od verze 4.1. Od verze 5.2 je v PHP standardně dostupné rozšíření filter a mnozí doporučují používat právě jeho funkce a na superglobální proměnné zapomenout. (Viz též Novinky v PHP5.2 od Jakuba Vrány)

Rozšíření filter se stará o ověření (validation) a ošetření (sanitization) dat. Pomocí direktivy v php.ini  lze nastavit filtrování všech dat v polích jako $_GET, $_POST atd. automaticky na pozadí. Mnohem flexibilnější je nespoléhat se na (ne)filtrování, které může být nastavené pokaždé jinak, a přistupovat k datům pomocí funkce filter_input(), u níž můžeme přesně specifikovat použitý filtr, a která vždy pracuje se surovými daty.

Pomocí validačních filtrů lze ověřit, zda je předložený řetězec např. platná IP adresa, syntakticky správná mailová adresa nebo kupříkladu reálné číslo. Ošetřovací filtry pak dokáží upravit předaná data podle požadavků (odstranit tagy, ponechat znaky platné v URL, ponechat znaky platné v e-mailové adrese nebo odfiltrovat vše, co není číslo). Chování filtrů lze specifikovat pomocí příznaků, nebo si lze napsat filtry vlastní, volané pomocí callback.

Rozšíření filter nabízí několik funkcí, které pokrývají širokou škálu práce s uživatelsky zadanými daty – od ověření existence (dříve isset($_GET[]), nyní filter_has_var()  – údajně rychlejší) přes filtrování vstupních proměnných a polí (filter_input a filter_input_array) až po filtrování libovolných proměnných (filter_var a filter_var_array).

K tématu: Už nepoužívejte $_GET / PHParch

Komentáře

Odebírat
Upozornit na
guest
6 Komentářů
Nejstarší
Nejnovější Nejvíce hlasů
Murdej

… ne moc dobre provedený.
Proč escapovat už na vstupu?
Při běžném programování (nemyslím tim ukázkové příklady) se stejně s proměnnou provádí další operace než se uloží do db. Třeba kontrola na délku řetězce je escapovaném řetezci nepřesná, takže si stejně musím vytáhnout originální text takže další proměnná navíc.
Navíc snad každý DB layer má dnes escapovaní už v sobě.
Tato „novinka“ je z roku 2006 … trochu pozdě ne? :)

fos4

Zprávička má reagovat na článek který vyšel zhruba před týdnem na phparchu:
http://www.phparch.com/2010/07/08/never-use-_get-again/
Bohužel z textu to není moc patrné.

sdaj;lfkdsalfhdsajhflkjds

To jo, ale obcas potrebujes neco validovat bez toho, abys to vkladal do DB, zobrazoval na vystupu, tedy to zadny layer pro tebe neudela …
Chces odeslat mail na uvedenou adresu, tak si to prozenes s filter_input a je to …
Jinak mi ale ten clanek na PHPArch pripada hrozny – po jeho precteni jsem ziskal dojem, ze escapovat vse hned pri startu skriptu (nebo jeste lepe pred startem) je dobry napad.

juraj

No nech sa páči, potom že prečo každý skúsenejší programátor na PHP nadáva.
Správanie sa mení každú verziu, čo mi v jednej verzii funguje, v druhej hádže chyby. PHP je zdokumentovaný bordel.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Neni nad hodnotny prispevek.

Začal jako projekt studentů Matfyzu. Český BIRD dnes pomáhá řídit provoz na největších internetových uzlech

Internet drží pohromadě i díky místům, kde se propojují sítě poskytovatelů připojení, cloudů nebo videoslužeb. S předáváním informací o tom, kudy jsou jednotlivé sítě dostupné, jim ve Frankfurtu, Londýně i Amsterdamu pomáhá český BIRD. Začal jako studentský projekt, po první verzi z roku 2000 léta spíš dřímal a soustavný vývoj obnovil až CZ.NIC. Ve své úloze uspěl tak výrazně, že největší uzly nakonec začaly platit vývoj konkurenčního softwaru, aby nebyly závislé jen na něm.

WebSocket: Jak dostat webovou aplikaci do reálného času

Chat, živé notifikace, společná úprava dokumentu nebo průběžně aktualizované kurzy. Uživatelé dnes čekají, že se webová aplikace změní ve chvíli, kdy se změní data, a ne až po stisknutí klávesy F5. Protokol WebSocket je nejrozšířenější způsob, jak mezi prohlížečem a serverem vytvořit trvalý obousměrný kanál. V článku se podíváme, jak funguje pod kapotou, jak ho použít v prohlížeči i na serveru a na co si dát pozor při nasazení do produkce.

Zahoďte knihovny: dropdowny, tooltipy a přechody stránek jen s HTML a CSS

Rozbalovací menu, tooltip, modální okno a plynulý přechod mezi stránkami. Ještě nedávno čtyři důvody, proč do projektu přidat několik knihoven a desítky kilobajtů JavaScriptu. V roce 2026 už to všechno zvládne prohlížeč sám. Ukážeme si, jak na to s Popover API, CSS anchor positioningem a View Transitions, a také kde mají své limity.