Autor Zpráva
O
Profil *
Zdravím,
umísťuji stránky na server, kde je register_globals = On. Jsou napsány při vypnuté direktiře a teď to někde trochu zlobí. Lze nějak kódově nastavit pro aktuální relaci register_globals = Off? Zkoušel jsem ini_set('register_globals','Off');
ale ve výpisu phpinfo() se změna neprojeví.
Nechce se mi to všude opravovat:)

Je nějaká "vyhchytávka"?

děkuji
nightfish
Profil
pokud jsou napsány stránky pro register_globals off a nasadíš je na server s register_globals on, tak by neměl být nejmenší problém

jinak programově v PHP nelze register_globals přepnout z On na Off ani obráceně
Joker
Profil
O
No, to asi nepůjde, ty globální proměnné by se přece musely zaregistrovat ještě před začátkem skriptu.

Ale není mi jasné, jaký problém by mohl mít skript se zapnutým register_globals, pokud byl psaný pro vypnuté. Obráceně je to jasné, ale takhle by snad neměl být problém?!
nightfish
Profil
Joker
napadá mě jedna možnost, která je důsledkem prasoprogramovacího stylu

používáš proměnné, jejichž názvy kolidují s názvy proměnných předávaných POST/GET a u těchto proměnných spoléháš na to, že obsahují při prvním použití prázdný řetězec
Joker
Profil
nightfish
Jo, něco takového mě taky napadlo, ale pořád jsem si neuměl představit praktický příklad, ale už mi to došlo; třeba přidávání k nějakému řetězci v cyklu aniž bych si ten řetězec napřed inicializoval.
Asi jsem tak zvyklý proměnné před použitím inicializovat, že mi ani nepřišlo na mysl, jak to udělat jinak :-)
Thalia
Profil
O
Můžeš zkusit, jestli to nepůjde přes .htaccess přidáním řádku php_flag register_globals off.
Leo
Profil
"Ale není mi jasné, jaký problém by mohl mít skript se zapnutým register_globals, pokud byl psaný pro vypnuté. Obráceně je to jasné, ale takhle by snad neměl být problém?!"

Hm, a uz jste nekdy pracoval se $_SESSION promennymi, tam to docela vadi, Leo
krteczek
Profil
Leo: Tam to vadí HODNĚ, přesvědčil jsem se o tom u jednoho skriptu, který u mne na lokale, i na hostingu fungoval krásně ale v momentě kdy jsem ho nasadil u klienta tak nefungoval (měl jsem stejné názvy jak v POST, SESSION tak i var), tam byli zaplé register globals a já je mám všude vyplé, nuluji proměnné, ale toto mne nenapadlo a trápil jsem se nekolik hodin než jsem na to přišel:-/, takže od te doby rozlišuji názvy proměnných ještě prefixy.
O
Profil *
děkuju všem,

Stalo se mi přesně to co píše krteczek. Mohl bych vědět o co se jedná s těmi prefixy?
tiso
Profil
O -asi to, že názvom premených z globálnych polí pridáva ešte nejaký prefix, napríklad:
$id - normálna premenná, bez prefixu
$g_id=$_GET["$g_id"] - get premenná, s prefixom g_
$p_id=$_POST["$p_id"] - post premenná, s prefixom p_
$c_id=$_COOKIE["$c_id"] - cookie premenná, s prefixom c_
$s_id = $_SESSION["s_id"] - session premenná, s prefixom s_
Toto téma je uzamčeno. Odpověď nelze zaslat.