Předvánoční Black Friday Předvánoční Black Friday
Až 80% zdarma! Předvánoční BLACK FRIDAY akce. Více informací
Avatar
petericek
Člen
Avatar
petericek:22. dubna 14:59

Ahoj, som začiatočník, pri tvorbe stránok som použil tento kód, ktorý som tu našiel: Skladaní stránek

if (isset($_GET['stranka']))
        $stranka = $_GET['stranka'];
else
        $stranka = 'domu';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
        $vlozeno = include('podstranky/' . $stranka . '.php');
        if (!$vlozeno)
                echo('Podstránka nenalezena');
}
else
        echo('Neplatný parametr.');

Kód úspešne funguje, super a vďaka autorovi. Chcel by som sa opýtať, či by sa dalo nejako riešiť toto: v adresári napr. html by som mal ešte nejaké podadresáre a z nich načítavať stránky. skúšal som tam vložiť svoju cestu aj s podadresárom, no hlási chybu: neplatný parameter. Ďakujem.

 
Odpovědět 22. dubna 14:59
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:23. dubna 11:13

http://php.net/….include.php
Priklady zapisu include viz dokumentace.

'hlási chybu: neplatný parameter'
Tu chybu hlasi i se jmenem souboru a radkem, na kterem nastala. Coz pomaha identifikovat problem. Takhle lze jen tipovat.
Ups, ok, to hlasi ten kod. Php ma jeste vlastni chyby. Povoluje se to zapisem na zacatku souboru
@ini_set('error_re­porting', E_ALL);
@ini_set("dis­play_errors", "1");
error_reportin­g(E_ALL);

Ok, takze zpet. Pokud to hlasi neplatny parametr a je to text z radku

echo('Neplatný parametr.'); // zmen na
echo('Neplatný parametr.XXX');

Jestli to pak vypise ty XXX, tak to znamena, ze text v promenne $stranka neprosel pres kontrolu

if (preg_match('/^[a-z0-9]+$/', $stranka))

Takze doporucuji si ten text vypsat, napriklad pres

var_dump($stranka);

Pravdepodobne tam mas nepovolene znaky. Kontrolni reg. vyraz dovoluje jen znaky a-z0-9. Pokud tam chces nejaky dalsi znak, tak staci pridat do zavorky.
^[a-z0-9]+$
^[a-z0-9_]+$ - podtrzitko
^[a-z0-9_A-Z]+$ - podtrzitko + velka pismena
^[a-z0-9-]+$ - minus, ale mozna s lomitkem nebo dvema, jedna z tech tri moznosti by mela fungovat
^[a-z0-9\-]+$
^[a-z0-9\\-]+$

Je to regularni vyraz, ktery hleda text odpovidajici podmince.
^...$ ohranicuje zacatek a konec retezce
a-z je abcde...z (pozor, bez diakritiky)
0-9 je 012...9
[] je jeden ze znaku v zavorce
+ opakovani 1 az nekonecno
Cili, ten vyraz kontroluje, zda text od zacatku az do konce obrahuje jen a pouze znaky a-z nebo 0-9. Minimalne tam musi byt 1 takovy znak.
Pokud ti ten reg. vyraz nevyhovuje, mohlo by byl lepsi pouzit konkretni seznam stranek.

$page_list = array(
"home",
"stranka1",
"stranka2"
);
if (in_array($stranka, $page_list)) {...}
Editováno 23. dubna 11:14
 
Nahoru Odpovědět 23. dubna 11:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.