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ší Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
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.

Cesta URL: co se děje, než se načte webová stránka

Když do adresního řádku prohlížeče napíšete webovou adresu a stisknete Enter, spustí se fascinující řetězec procesů, které propojují váš počítač s celým světem. Od překladu doménového jména na IP adresu, přes navázání šifrovaného spojení, až po vykreslení každého pixelu na obrazovce - to všechno se odehraje během zlomků sekundy. Pojďme se podívat, co se mezitím děje pod kapotou webu.

Stav SIMD v Rustu v roce 2025

Různé
Komentáře: 1
SIMD - neboli Single Instruction, Multiple Data - znamená, že procesor může jednou instrukcí zpracovat více datových prvků najednou. Typicky to znamená, že místo sčítání dvou čísel přičtete dvě sady čísel paralelně. To může přinést výrazné zrychlení například při zpracování obrazu, audia nebo numerických výpočtů. Pokud již SIMD znáte, tato tabulka je vše, co budete potřebovat. A pokud s SIMD teprve začínáte, tabulku pochopíte do konce tohoto článku