Autor | Zpráva | ||
---|---|---|---|
hecker14 Profil * |
#1 · Zasláno: 10. 8. 2012, 12:39:51 · Upravil/a: Moderátor (editace znemožněna) 10. 8. 2012, 13:45:45
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 |
#2 · Zasláno: 10. 8. 2012, 13:01:22
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 |
#3 · Zasláno: 10. 8. 2012, 13:06:37
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 * |
#4 · Zasláno: 10. 8. 2012, 13:57:19 · Upravil/a: hecker14
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 |
#5 · Zasláno: 10. 8. 2012, 15:13:41
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. |
||
Časová prodleva: 12 let
|
0