Autor Zpráva
hecker14
Profil *
Zdravim chcem poprosit o pomoc...
Nevyznam sa moc v PHP ale tak nieco zvladam...:)
Mam spraveny web a obsah stranky som spravil nasledovne:

<?php
                
                if (isset($_GET['action'])) 

{
    if ($_GET['action'] == "ubytovanie") {
    include('pages/ubytovanie.html');

    }elseif ($_GET['action'] == "ubytovanie-izby") { 
    include('pages/izby.html'); 
    }elseif ($_GET['action'] == "ubytovanie-apartmany") {
    include('pages/apartmany.html');
    }elseif ($_GET['action'] == "plavecke-kurzy-pre-deti-a-dospelych") {
    include('plavecke-kurzy-pre-deti-a-dospelych.html');
    }elseif ($_GET['action'] == "zumba") {
    include('pages/zumba.html');
    }elseif ($_GET['action'] == "antigravity") { 
    include('pages/antigravity.html'); 
      }elseif ($_GET['action'] == "sauny") {
    include('pages/sauny.html');
    }elseif ($_GET['action'] == "cennik") {
    include('pages/cennik.html');
    }elseif ($_GET['action'] == "galeria") { 
    include('pages/galeria.html');  
      }elseif ($_GET['action'] == "kontakt") {
    include('pages/kontakt.html');  

}    
?>


teraz ked otvorim napriklad: www.stranka.sk/index.php?action=cennik sa otvori cennik to je ok...ale pri otvoreni indexu by som potreboval aby sa mi otvorilo "pages/home.html" ale len pri indexe...to znamena neajky default neviem ci cez require alebo ...

pred tym som to mal cez "case" takto:

case 'kontakt':
include('pages/kontakt.html');
break;


default:
require('pages/home.html');
}
?>

lenze to blblo pod mozzilou...a teraz pri nacitani indexu mam prazdny page...prosim o pomoc s tym defaultom pri indexe...


dakujeeeeem


Moderátor Joker: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
Moderátor Joker: Titulek „prosim o pomoc s php - jednoduche“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
pcmanik
Profil
hecker14:
To co hladas je skutocne switch. Ako sa prejavolo to ze ti to nefungovalo? Inak ti staci za tu poslednu podmienku dopisat else include(...);
ShiraNai7
Profil
hecker14:
Další možnost je mít vše ve složce pages a načítat to takto (pak nemusíš po přidání nové stránky upravovat skript). Skript si uprav podle potřeby. Jdou na to snadno napojit pěkné adresy (tj example.com/kontakt namísto example.com/index.php?action=kontakt).

// konfigurace
$pageDir = '.'.DIRECTORY_SEPARATOR.'pages'.DIRECTORY_SEPARATOR; // cesta do adresare se strankami
$pageExt = 'html'; // pripona souboru stranek
$pageGetVar = 'action'; // nazev promenne v $_GET, ktera urcuje stranku
$homePageName = 'home'; // nazev hlavni strany (bez pripony)
$notFoundPageName = '404'; // nazev stranky pokud neni nalezena (bez pripony)

// vlozit aktualni stranku
if(isset($_GET[$pageGetVar])) {

    // sestavit cestu k souboru
    $pageFile = $pageDir.basename(str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, strval($_GET[$pageGetVar])));
    $pageFile .= ".{$pageExt}";

    // validace
    if(file_exists($pageFile) && $homePageName !== $_GET[$pageGetVar]) {

        // vlozeni stranky
        include $pageFile;

    } else {

        // stranka nenalezena
        if(!headers_sent()) header('HTTP/1.1 404 Not Found');
        include "{$pageDir}{$notFoundPageName}.{$pageExt}";

    }

} else {

    // hlavni strana
    include "{$pageDir}{$homePageName}.{$pageExt}";

}
hecker14
Profil *
pcmanik:

prosím ta dopíšeš posledný riadok aby mi otvorilo homepage?

doteraz som to mal takto:

.....

....
}elseif ($_GET['action'] == "kontakt") {
    include('pages/kontakt.html');  
    }else{    

    require('pages/home.html'); } 
    
 }
?>

lenze pages/home.html mi nenacital...proste biela stranka ...


problem vyrieseny dakujem velmi pekne "ShiraNai7" za script...:)
Joker
Profil
hecker14:
Změnil jsem titulek. Mnohem lepší informace než „prosim o pomoc s php - jednoduche“ (že jde o pomoc s PHP víme už z toho, že to je v kategorii PHP) je podstata problému.

Jestli jsem to ale správně pochopil, existuje drobný rozdíl mezi blokem default a tím, co se píše v prvním příspěvku.
První příspěvek řeší případ, kdy $_GET['action'] bude prázdné. Blok default se provede v případě, kdy tam bude cokoliv jiného, než odpovídá nějaké case podmínce.

Kdyby se měl řešit jen ten případ kdy to bude prázdné, je to celkem jednoduché. Kód v [#1] je celý obalený do podmínky if (isset($_GET['action'])).
Takže stačí za ukončení té podmínky dopsat else require('pages/home.html'); A možná bezpečnější by bylo tu podmínku předělat na empty, tedy: if (!empty($_GET['action'])).
Dál by ještě bylo potřeba vyřešit situaci, kdy v $_GET['action'] sice něco bude, ale nebude to odpovídat žádné existující stránce.

Použití switch+default pro tenhle případ je podle mě sporné, protože to hází do jednoho adresu domovské stránky s adresou neexistující stránky. A není úplně ideální na adresu neexistující stránky prostě zobrazit domovskou stránku, lepší by byla 404.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0