$_GLOBALS Pouziti – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

$_GLOBALS  Pouziti – PHP – Fórum – Programujte.com$_GLOBALS Pouziti – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Petr
~ Anonymní uživatel
696 příspěvků
24. 6. 2007   #1
-
0
-

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

Nahlásit jako SPAM
IP: ...–
Reklama
Reklama
24. 6. 2007   #2
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Petr
~ Anonymní uživatel
696 příspěvků
24. 6. 2007   #3
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
24. 6. 2007   #4
-
0
-

Neeee, vubec. $_GLOBALS se v praxi temer vubec nepouziva, je to jen takova alternativa pro zminovany prikaz globals. Jiny smysl nema.

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Petr
~ Anonymní uživatel
696 příspěvků
24. 6. 2007   #5
-
0
-

Kde tedy vyuziji superglobalni promenne konkretne na me prvni ukazce i z hlediska bezpecnostniho atd?

Nahlásit jako SPAM
IP: ...–
24. 6. 2007   #6
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Pavel Synek0
Super člen
24. 6. 2007   #7
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
24. 6. 2007   #8
-
0
-

Globalni promenne jsou promenne pristupne vsude v globalnim kontextu, superglobalni jsou vsechny $_??? a jsou pristupne bez vyjimky vsude.

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Petr
~ Anonymní uživatel
696 příspěvků
24. 6. 2007   #9
-
0
-

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?

Nahlásit jako SPAM
IP: ...–
Petr
~ Anonymní uživatel
696 příspěvků
24. 6. 2007   #10
-
0
-

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?

Nahlásit jako SPAM
IP: ...–
25. 6. 2007   #11
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Prog.0
Věrný člen
25. 6. 2007   #12
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
Prog.
Petr
~ Anonymní uživatel
696 příspěvků
26. 6. 2007   #13
-
0
-

OK. Diky. Zase o krucek blize k poznani.

Nahlásit jako SPAM
IP: ...–
29. 6. 2007   #14
-
0
-

BTW. AFAIK je to $GLOBALS, nikoli $_GLOBALS!!

Nahlásit jako SPAM
IP: ...–
Pavel Synek0
Super člen
29. 6. 2007   #15
-
0
-

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

Nahlásit jako SPAM
IP: ...–
29. 6. 2007   #16
-
0
-

lol, sry, jsem rikal ze takovy veci nepouzivam :p

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 27 hostů

Podobná vlákna

C# - pouziti += — založil aleskm

Použití tlačítka — založil Koumes21

Použití GUI — založil Nicolas

Použití iconv() — založil jumi

Použití metody — založil vena

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý