Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

PHP 5.2 a filter: konec $_GET?

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

Dále čtěte…         

Předchozí zprávička Následující zprávička        
Murděj Uktrurný aura:69
12. 7. 2010 10:45 Nový

Dobrý nápad ale ...

celé vlákno

… 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? :)

Petr Bíža
12. 7. 2010 12:03 Nový

Re: Dobrý nápad ale ...

celé vlákno

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é.

Martin Malý aura:94
12. 7. 2010 12:16 Nový

Re: Dobrý nápad ale ...

celé vlákno

Baže. Je to tam jen výslovně odkázané. Pro jistotu jsem to tam tedy dopsal ještě jednou.

sdaj;lfkdsalfhdsajhflkjds
sdaj;lfkdsalfhdsajhflkjds (neregistrovaný) ---.59.broadband2.iol.cz
12. 7. 2010 12:08 Nový

Re: Dobrý nápad ale ...

celé vlákno

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
juraj (neregistrovaný) 94.136.139.---
12. 7. 2010 11:27 Nový

PHP.

celé vlákno

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
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (neregistrovaný) ---.59.broadband2.iol.cz
12. 7. 2010 12:09 Nový

Re: PHP.

celé vlákno

Neni nad hodnotny prispevek.

Zasílat nově přidané příspěvky e-mailem        

Přehled názorů

Dobrý nápad ale ...
Murděj Uktrurný 12. 7. 2010 10:45
├ 
Re: Dobrý nápad ale ...
Petr Bíža 12. 7. 2010 12:03
│
└ 
Re: Dobrý nápad ale ...
Martin Malý 12. 7. 2010 12:16
└ 
Re: Dobrý nápad ale ...
sdaj;lfkdsalfhdsajhflkjds 12. 7. 2010 12:08
PHP.
juraj 12. 7. 2010 11:27
└ 
Re: PHP.
XXXXXXXXXXXXXXXXXXXXXXX…XXXXXXXX 12. 7. 2010 12:09