Kezdőoldal » Számítástechnika » Weblapkészítés » Mi lehet a baj a linkkel?

Mi lehet a baj a linkkel?

Figyelt kérdés

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.



2015. nov. 20. 10:03
1 2
 1/14 anonim ***** válasza:

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"];

2015. nov. 20. 10:15
Hasznos számodra ez a válasz?
 2/14 anonim ***** válasza:

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.


[link]

2015. nov. 20. 10:21
Hasznos számodra ez a válasz?
 3/14 anonim ***** válasza:
Szintén balf_sz voltam. Nem hiba, hanem figyelmeztetés. Reggel van még.
2015. nov. 20. 10:22
Hasznos számodra ez a válasz?
 4/14 anonim ***** válasza:

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...

2015. nov. 20. 10:25
Hasznos számodra ez a válasz?
 5/14 A kérdező kommentje:
Nagyon szépen köszönöm a gyors választ, meg is oldódott. És igyekszem nem szart csinálni, csak még nem sok tapasztalatom van benne :)
2015. nov. 20. 10:27
 6/14 anonim ***** válasza:
(Én sajnálom a register_globals -t, mert ahogy az kikerült, a weboldalak 80% -a MySQL injection és egyéb módokon törhetővé váltak, igaz néhány fejlesztő életét megkönnyítették, pár POST/GET unescapelés -el, de hatalmas biztonsági rést ütött a weboldalakon, és mai napig ez a legnagyobb gond, még sokszor az új egyedi oldalak esetében is.)
2015. nov. 20. 10:29
Hasznos számodra ez a válasz?
 7/14 anonim ***** válasza:
(Ezt az oldalt is kiütné, ha 5.3.x -ről frissítenének 5.4.x -re)
2015. nov. 20. 10:33
Hasznos számodra ez a válasz?
 8/14 anonim ***** válasza:

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...

2015. nov. 20. 10:33
Hasznos számodra ez a válasz?
 9/14 anonim ***** válasza:
#6 Ezt fejtsd ki kérlek kicsit bővebben.
2015. nov. 20. 10:35
Hasznos számodra ez a válasz?
 10/14 anonim ***** válasza:

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)

2015. nov. 20. 10:55
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!