Mi lehet a baj a linkkel?
A mai nap frissítettem a php verziót az appserverben (5.2.6-ról 5.4.45-re). Eddig a régi verzióval minden jól működött, nem írt ki hibát, de amióta az újab verziót használom azóta azt írja ki hogy: "Notice: Undefined variable: p "
Itt a kód: [link]
Lényegében azt csinálta hogy valamelyik linkre rákattintva felvette az adott p értékét és egy php részen belül megvizsgálta melyik az, ezek után pedig a textarea részbe beolvasta a p-hez tartozó "fájlt". De most csak a fent említett hibát írja ki... Remélem érthető volt, ha esetleg mégsem akkor szóljatok. A válaszokat meg megköszönöm vagy a segítséget.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
A php.ini-ben azonnal állítsd be ezt:
register_globals off
Ennek biztonsági okai vannak. Ha már programozással foglalkozol, próbálj meg nem szart csinálni.
Innentől kezdve, ha van egy URI-d, ami mondjuk így néz ki:
index.php?p=asd
Akkor a p paraméter értékét a $_GET["p"] változón keresztül érheted el.
Ha ilyened van:
<form method="post" action="...">
<input type="text" name="asd">
</form>
Akkor az asd nevű mezőt a $_POST["asd"] változón keresztül érheted el.
Ja! isset()-tel mindig ellenőrizd, hogy egyáltalán létezik-e az a változó, mielőtt használod. Figyelj oda arra, hogyha mondjuk nem szöveget, hanem mondjuk egész számot vársz, típuskényszerítést végezz, szintén biztonsági okokból:
if (!isset($_GET["p"]))
//valami hibát dobsz, vagy valamit másképp csinálsz
else
$p = (int) $_GET["p"];
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Mondandómat azzal egészíteném ki, hogy balf_sz voltam, és az elején hülyeséget írtam. A register_globals-t nem tudod állítgatni, merthogy már el is lett távolítva, hála Istennek és a fejlesztőknek. Ezért kapod a hibát.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
PHP 5.4 -es verziótól nincs Register Globals,
így $p -t nem tudja értelmezni, $_GET['p'] néven kapod meg.
Illetve még van több mint egy tucat jelentősebb változás.
pl. magic quotes is kikerült, így GET/POST/COOKIE/REQUEST -ból érkező adatokat, neked kell escape -elni.
Vagy ha pl. session -t használsz, akkor nincs session_register, hanem globális tömbbe $_SESSION -ba kell felvinni és onnan lekérni.
Illetve sok alap funkció még kikerült, vagy átalakult, így ezeket is célszerű megnézni.
Vagy pl. ott a MySQL amiről lassan át kéne szokni MySQLi -re mert az is következő verziókba kikerül...
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Mindent leírtak előttem. Egyébként jogos, hogy végre kiszedték ezt.
Gondoljunk csak bele: ilyen elven, bármelyik másik változónak is lehetett volna kívülről értéket adni...
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Elírtam, nem RegGlobals, hanem Magic Quotes GPC -re vonatkozott.
(RegGlobals hiánya csak kényelmetlenséget okozott néhány ponton, amúgy ini fájlból lehetett megadni, milyen globális változókra vonatkozzon, így akár lehetett csak GET vagy csak POST -ra is állítani)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!