Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: $_GET[zmienna] a $zmienna
Forum PHP.pl > Forum > PHP
MalyKazio
Witam,

Przerabiam właśnie swoją stronę z postnuka na własny projekt. Mam pewien problem. W module napisanym przeze mnie do Postnuka używałem zmiennych przekazywanych w tablic $_GET poprzez wywołanie $zmienna a teraz mam z tym wszystkim pewien problem bo nie wszystkie zmienne zachowują się tak jak powinny. Niektórych nie widzi. Pewnie poprawniejsze jest używanie $_GET i dlatego zamieniam wszystkie zmienne na $_GET[zmienna] ale czy ktoś może mi powiedzieć z czego wynika ten kaprys? Czy da się jakoś obejść i zrobić tak, żeby zmienna $_GET[zmienna] = $zmienna - tak na wypadem gdybym zapomniał gdzieś podmienić?
tomekp
Przypisz sobie na sztywno $zmienna = $_GET['zmienna'], bedziesz to musiał zrobić tylko w innym miejscu a nie zmieniać w innych. Bo podejrzewam, że korzystałeś z register_globals on.
Cysiaczek
Dyrektywa register_globals musi być ustawiona na On w pliku php.ini. Jest to jednak naprawdę bardzo mocno i konsekwentnie niezalecane, bo za jakiś czas wogóle zniknie z php.

Pozdrawiam.
MalyKazio
Faktycznie, Register Globals są włączone (serwer Home.pl). tylko, ze serwera nie zmienialem a tu takie kwiatki smile.gif Czyli mówicie, że lepiej chwilę posiedzieć i pozmieniać na $_GET? A jeśli na $_GET to $_GET[zmienna] czy $_GET['zmienna']?
Cysiaczek
Ta druga wersja - pierwsza powoduje NOTICY.
MalyKazio
dzieki wielkie. troche poprawiania mnie czeka biggrin.gif

W nawiązaniu do wcześniejszych wypowiedzi:
Czy zawsze powinno używać się $_GET['zmienna'] albo $row['nazwapola'] (przy wyciąganiu z bazy), czy też to pisanie z apostrofami dotyczy tylko GET i POST?
Dalej. Jak zrobić jeśli nazwa zmiennej sama jest zmienną, np: $row[$zmienna] ? W apostrofach chyba nie podmieni zmiennej na wartość, mam rację?
nevt
podstawy składni się kłaniają...
$tablica[abc] - ŹLE - abc nie jest w php poprawnym wyrażeniem, chyba, że wcześniej zefiniujesz taką stałą
$tablica['abc'] - DOBRZE pod warunkiem, że to tablica acocjacyjna
$tablica['$abc'] - ŹLE - o ile oczekujesz że w miejsce indeksu podstawi ci wartość zmiennej $abc
$tablica[$abc] - DOBRZE
$tablica["$abc"] - DOBRZE pod warunkiem, że to tablica acocjacyjna, wyrażenia w podwójnym cudzysłowie są interpretowane i rzutowane na string - stąd błąd często popełniany przez początkujących, to założenie, że zapisy:
$tablica[$abc] i $tablica["$abc"] dadzą ten sam wynik. otóż tak, ale pod warunkiem, że zmienna $abc zawiera tekst. Jeżeli zawiera liczbę, np. $abc = 1, to pierwszy przykład odpowiada zapisowi $tablica[1] a drugi $tablica['1'] co może prowadzić do trudnych do odnalezienia błędów...

a co do register_globals, nie musisz mozolnie przeglądać kodu, możesz napisać własny skrypt register_globals.php, i inkludowac tam gdzie to potrzebne:
  1. <?php
  2. foreach($_REQUEST as $var => $value)
  3. $$var = $value;
  4. ?>

i na początku każdego skryptu, gdzie to potrzebne:
  1. <?php
  2. require_once('register_globals.php');
  3. ?>

powodzenia
MalyKazio
Tak właśnie myślałem. Chodziło mi tylko o to ze zmienną jako indeksem. Dzięki za wyjaśnienie.
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.