witam mam takie pytanie/problem a dokładniej ... chciałbym pewien fragment kodu wrzucić do funkcji i zapisać to w pliku funkcje.pl - tak też zrobiłem . ALE pojawił się problem otoż.. funkcja x jest includowana z pliku funkcje.pl następnie jest wywoływana i chciałbym aby zwracała wartości pewnych zmiennych lecz zauważyłem że zasięg zmiennych ogranicza się do pliku funkcje.php . mam racje czy się mylę pytam bo wywala mi NOTICE -> Notice: Undefined variable: ogol_sila in E:\VertrigoServ\www\gra\test.php on line 12 a zmienna ogol_sila jest stworzona w funkcje.php ma wartosc i jest includowana w test.php
Jeżeli to nie pomoże, to pokaż nam te dwa pliki test.php i funkcie.php
Cytat
zapisać to w pliku funkcje.pl
Chyba funkcje.php
Ulysess
23.07.2010, 09:02:06
global czyli register globals mam to wył i nie mam zamiaru wł hmm czyli jeśli chce aby dany kod został wykonany i zwrócił kilka/kilkanaście zmiennych musze dać zwykły kod w include bo zmienne w funkcji działają tylko w niej ?
phpion
23.07.2010, 09:04:03
Cytat(Ulysess @ 23.07.2010, 10:02:06 )
global czyli register globals mam to wył i nie mam zamiaru wł
global nie ma nic wspólnego z register_globals. Oznaczenie zmiennej w funkcji jako global spowoduje, że będzie to zmienna spoza funkcji.
do funkcji są przekazywane 3 parametry id usera, 2 usera i ilosc wywolan petli funkcja oblicza 'cos' na podstawie tych danych i chciałbym aby zmienną $ogol_sila (ktora pochodzi z zawartości funkcji) wyświetlić , lub dalej przetwarzać w pliku test.php
aha czyli wpierw deklaruje że dana zmienna jest zmienną globalna , następnie przypisuje jej wartość i jeszcze takie pytanie czy jest bezpiecznie używanie tego GLOBAL ?
Demongod
23.07.2010, 09:36:15
Cytat(phpion)
global nie ma nic wspólnego z register_globals. Oznaczenie zmiennej w funkcji jako global spowoduje, że będzie to zmienna spoza funkcji.
Tak, bezpieczne
phpion
23.07.2010, 09:49:19
Cytat(Demongod @ 23.07.2010, 10:36:15 )
Tak, bezpieczne
No nie do końca. Bezpieczne jest pod kątem prób włamań, natomiast może powodować trudne do zlokalizowania błędy. Trzeba uważać by nie doszło do kolizji nazw zmiennych i ewentualnego nadpisywania wartości.
thek
23.07.2010, 10:14:56
To zrób inaczej. Globali nie powinno się używać z powodów bezpieczeństwa danych i tego co jest tutaj powodem tematu -> zasięg zmiennych. Nie wiesz nigdy, czy nie przesłonisz globalem jakiejś innej zmiennej o tej samej nazwie. Lepiej daną zmienną wrzucić jako parametr a zwrócić poprzez return. Ewentualnie, jeśli wiesz co robisz, użyć referencji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.