Když potřebujeme register_globals

Upozornění! Tento článek vyšel před 12 lety. Můžete si jej přečíst v rámci zkoumání minulosti, ale přepokládejte, že dnes se Honza již nemusí s obsahem ztotožňovat.

Stalo se tuším od jedné z podverzí PHP4 dobrým zvykem vypínat v PHP direktivu register_globals. Naštěstí. Díky tomu pak nemáme přístup k příchozím datům přes různě pojmenované proměnné, ale máme je hezky v globálních polích, třízena podle způsobu, jakým k nám přišla. To je nejen o dost přehlednější, ale také bezpečnější.

Co ale dělat, když máme nějaký starý projekt napsaný se zapnutými register_globals? Určitě je jednodušší je zapnout a případně si pohlídat bezpečnostní rizika, než přepisovat celý kód. Máme tři možnosti:

Apache#

Serveru řekneme co potřebujeme v souboru .htaccess.

php_flag register_globals 1

Změna nastavení přímo v PHP#

Použijeme ini_set.

ini_set('register_globals','on');

Nastavení na serveru nelze změnit#

V tomto případě nám nezbyde, než si ručně proměnné vytvořit.

extract($_REQUEST);