Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> $_GET[zmienna] a $zmienna
MalyKazio
post
Post #1





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

Ostrzeżenie: (0%)
-----


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ć?


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
tomekp
post
Post #2





Grupa: Zarejestrowani
Postów: 171
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Krakół

Ostrzeżenie: (0%)
-----


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.


--------------------
escape from the execution is futile.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
MalyKazio
post
Post #4





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

Ostrzeżenie: (0%)
-----


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']?


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #5





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Ta druga wersja - pierwsza powoduje NOTICY.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
MalyKazio
post
Post #6





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

Ostrzeżenie: (0%)
-----


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ę?


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
nevt
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


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

Ten post edytował nevt 25.11.2007, 13:19:40


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
MalyKazio
post
Post #8





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

Ostrzeżenie: (0%)
-----


Tak właśnie myślałem. Chodziło mi tylko o to ze zmienną jako indeksem. Dzięki za wyjaśnienie.


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 03:51