Pravilen PHP, kako daleč ?

Noh, malo sem razmišljal, pa me zanima kako daleč greste s svojo PHP kodo ?

Do popolnosti ?

namreč, jaz popravim vse, tudi tisto ko je pripomba, ali kar pač je notice, opozorilo ...

edino tole:
Notice: Undefined variable: url_array in /var/www/*.net/strani/aktualno.php on line 9

napaka se pojavi ker imam takole,

podomena.domena.net/nekaj/ v tem primeru je url_array[1] = nekaj, ker poberem cel naslov in potem razbijem ... če pa je podomena.domena.net pa dobim zgornji error, ker naslova ni dalje oddomene, torej, vse naprej oddomene je null.

Potem takem ni prvega zapisa v arrayu, ker ni nobenega. Zato dobim undefined. Zadeva dela, ker primerjam iz IF, na koncu pa pride else, če uporabnik vnese kako sra*je, ali nekaj kar ne obstaja.

Torej dobimvam ta notice kar tako, seveda bi ga odpravil če uporabim isset, vendar se mi zdi brezveze dodajat to vsepovsod. Ker je delovanje enako, oz. celo hitreje, ker je manj kode ? (po mojem razmišljanju).

Lahko pa nastavim arraye na 0 če ne obstajajo, tukaj pa je drugi problem, ker ŠE ne vem kolko bo arrayev, namreč index.php?...blabla sploh nebo, vse spremenljivke bom imel v arrayu :).

Skratka koliko je ta notice pomemben ? Je spremenljivo če ga spregledam ? Kaj bi naredili Vi ?

3 odgovori

ce te tole moti, izklopi E_STRICT...

bi ti pa vseeno priporocal, da odpravis ta opozorila... nedefinirane spremenljivke so lahko vzrok hudih bugov ali pa celo varnostne luknje...

if (isset($_GET["url"]))
{
    $url = str_replace(array("\\", ">", "<", '"', "'"),  array("", "", "", "", ""), $_GET["url"]);
    $url_array = explode("/", htmlspecialchars($url, ENT_QUOTES));
}

vem da znaki ne pridjo skozi prvo kodo in je htmlspecialchars tam brezveze, ampak vseeno, če se bo kdo zapičil v tole ...

potem pa mam

if ($url_array[1] == "nekaj") { echo "nekaj";} else { echo "tu je error"; }

in če se zgodi else, dobim error.

if (isset($urlarray[1]) && $urlarray[1] == "nekaj") ...

Drugače pa tak na produkcijskem serverju onemogočiš pošiljanje vseh noticov in errorjev browserju.