Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Znaczenie zmiennych superglobalnych
Forum PHP.pl > Forum > Przedszkole
Guest
witam, mam pytanie poniewaz zastanawiam sie czy to co jest ponizej jest mi wogole potrzebne. do czego to sluzy?
  1. <?php
  2. if(!$PHP_SELF){
  3. if($HTTP_POST_VARS)  {extract($HTTP_POST_VARS, EXTR_PREFIX_SAME, "post_");}
  4. if($HTTP_GET_VARS) {extract($HTTP_GET_VARS, EXTR_PREFIX_SAME, "get_");}
  5. if($HTTP_COOKIE_VARS) {extract($HTTP_COOKIE_VARS, EXTR_PREFIX_SAME, "cookie_");}
  6. if($HTTP_ENV_VARS)  {extract($HTTP_ENV_VARS, EXTR_PREFIX_SAME, "env_");}
  7. }
  8. ?>
nospor
skad ty wytrzasnoles ten kod? rety, jak z jakiejs ksiązko to odradzam jej dalszą lekture winksmiley.jpg

Kod ten sprawdza, czy masz wlączone register globals i jesli nie, to wydobywa wszystkie indexy z tablicy sesyjnej, ciastkowej, postowej i url'owej z odpowiednim prefixem (w przypadku kolizji), bys wiedzial skad te zmienne pobrano.

Zapomnij o tym kodzie. Jak chcesz sie dobrac do zmiennch formularza, to dobieraj sie przez $_POST['zmiennaformularza']. analogicznie do innych: $_SESSION['zmiennazsesji'], $_GET['zmiennazurl'], $_COOKIE['zmienna z ciasteczka']. Takie dobieranie się do zmiennych jest bezpieczniejsze od zaproponowanego tam.

edit: w tym kodzie nie ma sesji, jest tablicia srodowiskowa (niedopatrzylem). ale idea podobna winksmiley.jpg
Guest
calosc wogole ma postac:
  1. <?$path = ".";
  2. if(!$PHP_SELF){
  3. if($HTTP_POST_VARS)  {extract($HTTP_POST_VARS, EXTR_PREFIX_SAME, "post_");}
  4. if($HTTP_GET_VARS) {extract($HTTP_GET_VARS, EXTR_PREFIX_SAME, "get_");}
  5. if($HTTP_COOKIE_VARS) {extract($HTTP_COOKIE_VARS, EXTR_PREFIX_SAME, "cookie_");}
  6. if($HTTP_ENV_VARS)  {extract($HTTP_ENV_VARS, EXTR_PREFIX_SAME, "env_");}
  7. }
  8. if($PHP_SELF == ""){ $PHP_SELF = $HTTP_SERVER_VARS[PHP_SELF]; }
  9. ?
  10. ?>

czyli z tym jak i bez tego strona bedzie dzialac tak samo?
nospor
nie, zalezy wszystko od tego w jakis sposob bedziesz dobieral sie do zmiennych. jesli poprzez supertablice: $_POST, $_GET .... to olej ten skrypt, ale jesli nie, to mozesz miec problemy. Jelsi bedziesz mial wylaczone register_globals, to gdy bedziesz dobieral sie do zmiennej z url o takim adresie powiedzmy: index.php?ala=xxxx
  1. <?php
  2. echo $ala;
  3. ?>
to wyswietli ci: xxxx
ale gdy zmienna 'ala' pojawi sie jeszcze np. w ciastku, to nie bedziesz juz mial zmiennej $ala, tylko zmienne $get_ala oraz $cookie_ala, w wyniku czego echo $ala ci nic nie zroci, prócz NOTICE, gdyz takiej zmiennej nie bedzie.

najlepiej odwolywac sie przez tablcie co ci mowilem, czyli:
  1. <?php
  2. echo $_GET['ala'];
  3. ?>
ale tym juz bylo nieraz na forum

edit:
lekkie sprostowanie z mojej strony. trochę się rozpędzilem.
gdy bedzięsz mial w url i w ciachu ala, to najpierw stworzy zmienną $ala, a potem $cookie_ala, gdyż już $ala istnieje. No chyba ze juz wcześniej była $ala w skrypcie, to powstanie $get_ala. Tak czy siak zasymuluje register_globals, których używanie jest niezalecane winksmiley.jpg
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.