Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Notice: Undefined variable
Forum PHP.pl > Forum > Przedszkole
Gość_Gnomik
Witam!

Otóż mam pewien problem (przepraszam jeśli umieściłem go w złym dziale - dla Was będzie prosty więc chyba mimo wszystko chyba pasuje.)


Znalazłem na tym forum tematy tyczące się niezdefiniowanych zmiennych, ale ani jeden nie brał pod uwagę mojego problemu.

Otóż w beznadziejnie prostym kodzie (wybaczcie nazwę zmiennej ale to moje Default nazewnictwo jeśli sobie z czymś nie radzę):

index.php:
  1. <?php
  2. echo $dupa;
  3. ?>


Otrzymuję powiadomienie w drugiej lini "Unidenfined variable: dupa". Nie byłoby w tym praktycznie nic dziwnego jeśli "error_reporting = E_ALL" ale... Dlaczego dostaję to powiadomienie w przypadku wywolania "index.php?dupa=wielka" ? Nie działa mi kompletnie przekazywanie zmiennych przez parametr.

error_reporting = E_ALL ze względów kosmetycznych już sobie wyśrednikowałem, ale co z tego jeśli problem nie znika?

Nie jestem w stanie przekazać ani jednej zmiennej przez "index.php?..."


Środowisko: Apache/2.0.55 (Win32) i php/5.1.2


Z góry dziękuję za odpowiedź,
Pozdrawiam
Gnomik
nospor
Najzwyklej w świecie masz wyłączone register_globals. I bardzo dobrze smile.gif To jest niebezpieczna metoda. Do zmiennych z url musisz sie odwolywac z $_GET, czyli:
  1. <?php
  2. echo $_GET['dupa'];
  3. ?>


ps: i uwierz. jest multum wątków o tym zagadnieniu winksmiley.jpg
Gość_Gnomik
Mhm, rozumiem.

W takim razie pociągnę pytanie dalej: jakie niebezpieczeństwa ciągnie za sobą włączenie register_globals?

Nie chodzi mi o kwestie dogłębne, rozumiem że na względzie mamy oczywiście bezpieczeństwo. Pytam, ponieważ wszysytko jest dla mnie tylko na potrzeby własne - oczywiście nauki php. Jaka jest różnica użyciem:

echo $_GET('dupa');

a użyciem:

echo $dupa;


Przepraszam najmocniej że nie przeszukałem dogłębniej forum w poszukiwaniu odpowiedzi na moje poprzednie pytanie. Nie miałem w zamiarze zaśmiecania forum. smile.gif

Pozdrawiam,
Gnomik
nospor
Na twoje kolejne pytanie tez juz padaly odpowiedzi winksmiley.jpg
W skrócie: bo tak smile.gif. żeby ci sie haker nie wczepil nie tam gdzie trzeba. Nie wiesz wowczas skąd dana zmienna pochodzi. Bo ty myslisz ze z sesji, a w rzeczywistości np. z url smile.gif I juz masz problem winksmiley.jpg
poczytaj se to bys uniknąl kolejnych takich postów:
http://forum.php.pl/index.php?showtopic=30056&st=0

a ten zamykam
kszychu
Ano niebezpieczeństwo jest takie, że chcesz użyć zmiennej sesyjnej i po włączeniu register_globals nie musisz odwoływać się do niej przez $_SESSION['dupa'] tylko zwyczajnie $dupa.
Ale jakaś bystrzejsza osoba odkrywa to i wywołuje Twój skrypt tak:
skrypt.php?dupa=wołowa
I wtedy twój skrypt, nieświadom niczego, nie pobiera zmiennej z sesji tylko z urla, i wtedy, mówiąc kolokwialnie, dupa!
A co do używania tego do własnych potrzeb: jeśli nabierzesz złych nawyków na małych skryptach to na pewno nie zmienisz ich podczas tworzenia dużych.
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.