Zabezpečení

<?php
if
(isset ($GET_["serial"]))
$serial = $GET_["serial"];

if
(isset ($GET_["stranka"]))
$stranka = $GET_["stranka"];

else
echo "Stránky nejsou dostupné";
?>

Proč mi to vypisuje "Stránky nejsou dostupné" ikdyž zadám do vyhledávače index.php?serial=zavod&stranky=auto
? :)
viz

&stranky=auto

(isset ($GET_["stranka"]))
$stranka = $GET_["stranka"];
ds: Už jsem na to přišel bylo to hlavně tím, že jsem si tam dal $GET_["stranka"] a správně tam má být $_GET["stranka"] ta čárka dole... :)
Tak už jsem dokončil to co jsem chtěl co na to říkáte?

<?php
if
(isset ($_GET["serial"]))
$serial = $_GET["serial"];
else
$serial = "novinky";

if
(isset ($_GET["stranka"]))
$stranka = $_GET["stranka"];
else
$stranka = "1";

$soubor = "$serial/$stranka.php";
if
(file_exists ($soubor))
include $soubor;
else
include "stranka-neexistuje.php"
?>
Už se asi budu opakovat, ale říkám na to toto:

a) Nelíbí se mi zápis podmínky na více řádcích (součástí if je i závorka s hodnotou vstupující do podmínky), stejně tak bych se pro přehlednost držel používání složených závorek (tzn. dělení do bloků). Třeba takto:

if(isset ($_GET["serial"]))
{
$serial = $_GET["serial"];
}
else
{
$serial = "novinky";
}

Případně takto triviální podmínky (kdy zapisuješ v každém případě do jedné proměnné) zapisovat pomocí ternárního operátoru:

$serial = isset ($_GET['serial']) ? $_GET['serial'] : 'novinky';

b) Nelíbí se mi použití uvozovek místo apostrofů. Ale to je spíš otázka zvyků a osobních preferencí.
c) A hlavně se mi nelíbí to, co se stane na adrese ?serial=.&stranka=index

Co se týče možnosti c), tu jsme probírali již v jiném vlákně (jak si jistě dobře vzpomeneš).
Ohledně zápisu se názory liší a různé firmy mají různý coding style. Osobně preferuji poněkud úspornější zápis, např. takto:

if(isset ($_GET['serial'])){
$serial = $_GET['serial'];
}else{
$serial = 'novinky';
}

Použití ternárního operátoru je v daném případě skutečně výhodnější a rychlejší.

Uvozovky mají trochu odlišné použití než apostrofy, je skutečně lepší použít apostrofy tam, kde je to možné. Ovšem v daném případě uvozovky nejsou chybou.

Možnost c) mě napadla asi současně. Je dalším důvodem pro použití databáze.
Freeze dal jsem na tvoje rady kromě ternárního operátoru, protože mu moc nerozumím a web nedělám na profesionální úrovni, takže třeba to, že bych měl stránku načtenou o 8ms mě nějak netápí.
a) dodělal jsem ty závorky
b) předělal jsem ty uvozovky a dal jsem tam apostrofy
c) zakázal jsem tečky takže adresu ?serial=.&stranka=index si už můžeš napsat, stejně ti to vyhodí $serial = "novinky";

<?php
if
(isset ($_GET['serial']) && substr_count($_GET["serial"], ".") < 1)
{
$serial = $_GET['serial'];
}
else
{
$serial = "dexter";
}
if
(isset ($_GET['stranka']))
{
$stranka = $_GET['stranka'];
}
else
{
$stranka = "titulky";
}
$soubor = "$serial/$stranka.php";
if
(file_exists ($soubor))
include $soubor;
else
include "stranka-neexistuje.php"
?>

Co na to říkáte a díky za čas, který tu se mnou trávíte.. :)
Sorry teď to nevyhodí $serial = "novinky"; ale $serial = "dexter"; :D
<HTML>Pořád se mi to nelíbí:

?serial=&stranka=absolutnicestabezprvniholomitka/index
?serial=castaboslutnicesty&stranka=zbytekabsolutnicesty/index
?serial=absolutnicesta&stranka=index

Tohle všechno projde a zacyklí ti skript.

Prosím tě, buď tak hodnej a zamysli se nad použitím nějaké databáze. I ta nejprimitivnější (textový soubor, co řádek, to seriál) ti ušetří pěkných pár bezpečnostních problémů.</HTML>
A k čemu to vůbec vadí, že mi někdo zadá tuhle adresu? Vyhodí mu to chybu a co dál ostatním uživatelům to nějak neovlivní průběh na stránkách. :) Na stránky stejně nemůže nic zapsat když nenastavím atribut, který mu to dovolí... :)