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

Odysseus: PewDiePie vydal open-source AI workspace, který běží na vašem vlastním hardwaru

AI
Komentáře: 0
Felix Kjellberg, youtuber se 110 miliony odběratelů, strávil rok učením se programovat a fine-tuningem vlastních AI modelů. Výsledkem je Odysseus – bezplatný, open-source workspace pro práci s umělou inteligencí, který neposílá žádná data do cloudu. Projekt má týden, přes 61 000 hvězdiček na GitHubu a znovu otevírá otázku, komu vlastně patří váš digitální kontext.

Když Git už nestačí: jak izolovat databázový stav pro pokusy AI agentů

Gitová větev vývojářům oddělí kód, ale databáze často zůstává společná. U AI agentů je to slabé místo: rychle spouštějí migrace, mění data a zkoušejí víc cest najednou. Databázová větev jim dá vlastní pracovní prostor, jenže tím práce nekončí. Ještě je potřeba řešit citlivá data, oprávnění, životnost větve i zbytek stavu aplikace.

GitHub vyhrál pohodlím. Stejné pohodlí dnes ztěžuje odchod

GitHub kdysi působil jako přesný opak SourceForge: rychlý, přehledný a přirozený. Dnešní projekt na něm ale často nemá jen kód. Má tam issues, pull requesty, CI, balíčky, bezpečnostní pravidla i AI agenty. Lock-in nevzniká tím, že by nešel odnést Git repozitář, ale tím, že se běžný provoz týmu postupně přesune do jedné platformy.