Jak asi víte, v PHP 6 budou odstraněny konfigurační direktivy magic_quotes, dokonce pro tento krok už i vznikl patch. Nejen jako jejich možná náhrada vzniklo rozšíření Filter.
Základní funkcí tohoto rozšíření je funkce filter_var, která aplikuje daný filtr na předanou hodnotu. Filtrů je celá řada, rozdělit se dají do tří skupin:
Kromě ručního filtrování lze pomocí konfigurační direktivy filter.default automaticky filtrovat i všechna data od uživatele. Tato direktiva je podle mě trochu nešťastně přednastavena na filtr „string“, který je obdobou funkce strip_tags. Zpětnou kompatibilitu s magic_quotes_gpc zajistí filtr „magic_quotes“. Ve většině případů nejsem příznivcem odstraňování jakýchkoliv znaků – obvykle by mělo stačit je správně ošetřit, v odůvodněných případech zkontrolovat, jestli je hodnota neobsahuje a uživatele o tom informovat.
Druhou důležitou funkcí je filter_input, která slouží k přístupu k proměnným mimo PHP. Opět je možné jí předat filtr, který má na data aplikovat. Pomocí této funkce lze také získat přístup k originálním datům, pokud na ně byl použit výchozí filtr.
Ve starších verzích tohoto rozšíření se konstanty FILTER_VALIDATE_* jmenovaly FL_*, FILTER_SANITIZE_* FS_* a FILTER_CALLBACK FC_CALLBACK. Změna byla provedena jako součást přípravy na začlenění tohoto rozšíření přímo do PHP.
Vznik tohoto rozšíření vítám, protože poskytuje jednotný přístup ke kontrole, escapování a filtrování dat. S příchodem PHP 6 myslím bude také hojně využíváno pro skripty spoléhající na zapnuté magic_quotes_gpc. Nelíbí se mi kladení důrazu na sanitizační filtry. Na druhou stranu by možná stálo za to vytvořit filtr, který by požral všechno, takže by se k datům od uživatele dalo přistupovat výhradně přes filtry.
Diskuse je zrušena z důvodu spamu.