Dobry den. Predem se omlouvam, jestli se Vam budou zdat otazky jednoduche.
Pochopil jsem, ze
$_GET['mapromenna'] se posila pres http adresu
$_POST['mapromenna'], kdyz neco posilam pres formular
Kde se pouziva $_GLOBALS ?
Uvedu priklad - cast kodu.
@$dSelekceTab = MySQL_Query( "SELECT * FROM ceny WHERE id = 1" );
while (@$dVysledekVyb = MySQL_Fetch_Array($dSelekceTab) )
{
echo $sVypis=$dVysledekVyb["text"];
Mam tady pouzit nekde neco jako Globalni promenna kvuli bezbecnosti, nebo proto ze mam register_globals = Off, nebo proto ze v budoucnu se to muze hodit popr. jak to napsat dobre ? Ty data z DB bud vypisuji, scitam a nebo pak posilam pres formular.
Predem diky
Fórum › PHP
$_GLOBALS Pouziti
V globals jsou ulozeny vsechny globalni (nikoliv superglobalni) promenne, muzes treba udelat:
$a="Hello World";
echo $a;
echo $_GLOBALS["a"];
Obe vypisou Hello World. Hodi se to hlavne v pripadech, kdy ztracis kontext (?, angl. scope), tedy ve tridach a funkcich kde tim muzes nahradit neobratny prikaz global. Priklad:
function a(){echo $a;}
function b(){global $a; echo $a;}
function c(){echo $_GLOBALS["a"];
$a="Hello World";
a();b();c();
A vypise chybu, B a C vypisi zase Hello World.
Takze je lepsi predelat vsechny promenne na superglobalni promenne?
Bud takto : global $a;
nebo $_GLOBALS["a"]=$a;
Nebo staci predelat jen vysledek :
$sVypis=$dVysledekVyb["text"];
$_GLOBALS["sVypis"]=$sVypis;
Ja s tim pracuji druhy den tak v tom mam jeste zmatek a kdyz uz predelavam svuj web tak to chci mit dobre.
Neeee, vubec. $_GLOBALS se v praxi temer vubec nepouziva, je to jen takova alternativa pro zminovany prikaz globals. Jiny smysl nema.
Nikde. Zadny bezpecnostni prinos nemaji. Jedine, kde muze mitsmysl je vyuzit je ve vlastnich funckich, kde se, jak jsem jiz psal, ztraci kontext a nemas tedy pristup ke normalnim globanim promennym.
to Petr: myslím že si pleteš globální a superglobální proměné. Ty globální, jak již psal CommanderZ, slouží jen k zpřehlědnění kódu.
Bezpečnostní problémy by mohly nastat když budeš zpracovávat data odeslaná metodou POST superglobálním polem $_REQUEST. Potom může dojít k ledasčemu, ale to už nemá s $_GLOBALS nic společného.
Globalni promenne jsou promenne pristupne vsude v globalnim kontextu, superglobalni jsou vsechny $_??? a jsou pristupne bez vyjimky vsude.
Takze kdyz si napisu stranka.php a ta bude obsahovat moji funkci, ktera se pak require nacita tam kde potebuji je lepsi mit tu funkci napsanou tak aby tam byli superglobalni promenne jesli jsem to dobre pochopil a pak to najde uplatneni jeste pri prenaseni dat pres GET a POST. Proc vlastne vznikli superglobalni promenne?
Takze kdyz si napisu stranka.php a ta bude obsahovat moji funkci, ktera se pak require nacita tam kde potebuji je lepsi mit tu funkci napsanou tak aby tam byli superglobalni promenne jesli jsem to dobre pochopil a pak to najde uplatneni jeste pri prenaseni dat pres GET a POST. Proc vlastne vznikli superglobalni promenne?
Asi to porad nechapes, ve funkcich NEMUZES pouzivat normalni globalni promenne tak jak jsou, musis k nim pristupovat pomoci $_GLOBALS nebo global. Jinak jako normalni promenne budes ve funkcich opet pouzivat normalni, tentokrat ale pouze lokalni,promenne, ktere budou dostupne jen v te jedne funkci.
Ak definujes premmennu mimo fcie, a potrebujes k nej pristupovat, musis pouzit pole $GLOBALS, alebo global keyword. Tu nejde o otazku bezpecnosti.
http://www.php.net/manual/en/language.variables.scope.php
S bezpecnostou sa moze spajat pochopenie pouzivania superglobalnych $_GET, $_POST, $_COOKIE,... Napr. $_REQUEST treba pouzivat minimalne (ak vobec). - koli zavislosti na konfiguracii. Taktiez je zle mat v konfiguracii zapnute register_globals = on, cim sa stavaju vsetky vstupy (GET, POST, ...) globalnymi premmennymi - scripty sa daju lahko naburat.
BTW. AFAIK je to $GLOBALS, nikoli $_GLOBALS!!
Zelenáč píše:#
# BTW. AFAIK je to $GLOBALS, nikoli $_GLOBALS!!
Ajo:D já to tak taky napsal a musim říct že mi to vůbec nepřišlo divný...no psali to tak všeci tak i já:D
lol, sry, jsem rikal ze takovy veci nepouzivam :p
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
C# - pouziti += — založil aleskm
Použití Javy? — založil vesík
Pouziti ICloneable — založil alp
Použití FFTW3 — založil JakubD
Použití GUI — založil Nicolas
Moderátoři diskuze