Autor Zpráva
Lion76
Profil *
Zdravim, chtel bych se zeptat, jestli promenna $GLOBALS je bezpecna, protoze nejsem z toho vubec moudry. Cetl jsem si tady v diskusi prispevky na toto tema a nekteri pouzivaji global a nekteri zase $GLOBALS. Jaky je v tom rozdil? Co je bezpecnejsi? Da se nejakym zpusob promenna $GLOBALS osetrit? Predem vsem dekuji.
nightfish
Profil
Jaky je v tom rozdil?
když použiješ global $promenna;, tak veškeré výskyty $promenna v nějaké funkci budou odkazovat na globální proměnnou. V tomto případě nemůžeš mít lokální proměnnou se stejným názvem. Na druhou stranu při použití $GLOBALS jednoznačně říkáš, že pracuješ s globální proměnnou, a že jseš si vědom všech problémů s tím spojených.

Co je bezpecnejsi
ani jedno

Da se nejakym zpusob promenna $GLOBALS osetrit?
ošetřit proti čemu?

V tomto případě vstupuje do hry problém s globálními problémy obecně - preferovanou metodou předávání hodnot do funkcí je pomocí parametrů. V určitých případech může být zase výhodné použít konstanty - ty mají automaticky globální platnost. V případě, že ani jednu z těchto možností nelze použít, je nutné využít globálních proměnných.
Miloš
Profil
Zřejmě máš na mysli register globals.
Mastodont
Profil
Miloš
Řekl bych, že má na mysli $GLOBALS ...
http://cz2.php.net/manual/en/language.variables.predefined.php
Mastodont
Profil
Lion76
Bezpečná není IMHO ani jedna varianta.
nightfish
Profil
Mastodont
Bezpečná není IMHO ani jedna varianta.
mohl bys napsat, co konkrétně není na globálních proměnných bezpečného? (global, $GLOBALS, ne register_globals)
Lion76
Profil *
Dekuji vsem, predevsim nightfish, konecne v tom mam jasno.
Mastodont
Profil
nightfish
Třeba jejich možnost nastavení zvenčí?
DoubleThink
Profil *
Třeba jejich možnost nastavení zvenčí?
Proměnný parametr vstupující do funkce je z venčí nastavitelný úplně stejně (nesnadno).

Jde spíš o integritu a bezkoliznost, kdy ve vícevrstvé funkci (typický příklad RS Drupal), můžeš nechtěně přebíjet rodičovské proměnné, o kterých ani nevíš.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0