Switch to full style
Forum dyskusyjne poświęcone zagadnieniom związanym z tworzeniem serwisów z wykorzystaniem zaawansowanych technologii takich jak PHP, Perl, mySQL, ASP, CGI, XML, itp.
Odpowiedz

register_globals czy tablice $_POST itd

23 maja 2006, o 15:35

Mam pytanko dot. jak w temacie. Wiem, ze od PHP 4.0 bodajze wylaczone domyslnie zostala opcja register_globals. Jak to wszystko ma sie do wydajnosci. Chodzi o to, ze dotychczas dzialalem majac opcje wlaczona. Przekazywalem parametry dane do wielu funkcji. Chce pare rzeczy uporzadkowac i mam zatem pytania (dla pewnosci)
1) Czy dane przechowywane w tablicach globalnych maja zasieg globalny - czy tylko w sensie "globalny" dla jednego wykonywanego skryptu (widac je w funkcjach itd i nie trzeba ich przekazywac jako parametrow)?
2) Czy w przypadku przekazywania zmiennych (z wl opcja register_globals) do funkcji kazdorazowo tworzy sie w pamieci ich kopia?
3) Site, ktory produkowalem dzialal z wl. op register_globals czy jesli teraz wylacze te opcje i zdef w kazdym skrypcie $zmienna = $_POST['zmienna'] pogorsze tylko sytuacje? Powstana tak jakby duplikaty tych zmiennych - czy te duplikaty wyprodukuja kolejne kopie w pamieci (wyk. duza liczbe funkcji- pyt posrednio zwiazane z pyt 2, wiec zastosowanie tablic teoretycznie wykluczyloby przekazywnie parametrow do funkcji, z drugiej strony tablica $POST byla by spora....) Wszystko zalezy od tego jak zachowuja sie te zmienne...
Prosze o wyjasnienie znawcow tematu :-)

register_globals czy tablice $_POST itd

23 maja 2006, o 16:37

1) w funkcjach i tak musisz uzywac global, zmienne sa dostepne niezaleznie od tego czy sa $_GET, $_POST czy $_COOKIE, przez to mozna wpisac w adresie cos, co pozniej zostanie potraktowane jako np. zmienna okreslajaca to, ze osoba jest zalogowana
2) jesli nie uzywasz & to tak
3) mozesz przepisac zmienne z post do zwyklych, ale to spowoduje duplikacje, jesli oszczedzasz pamiec i chcesz przyspieszyc skrypt, to odwoluj sie bezposrednio do tego co masz w post, get, ... zapisane, zamiast if( $zmienna == "costam" ) robisz if( $_POST['zmienna'] == "costam" )

23 maja 2006, o 17:24

Ok, to co radzisz? Wrzucic wszystkie zmienne do $_POST? Zasieg zmiennych do konkretnego skryptu tak? Sam juz nie wiem... Mam indexa, do ktorego laduje kolejne podst. i te podstrony zawieraja funkcje - latwie mi sie tym zarzadza. Duzo formularzy i miedzy formularzami wiadomo - przerzucam duzo danych - z funkcji do funkcji - uzywajac $_POST dup`y zmiennych odpadaja...
Odpowiedz