Autor | Zpráva | ||
---|---|---|---|
Antti Profil |
#1 · Zasláno: 12. 3. 2011, 15:46:16
Zdravím, mám problém - používám kódy uvedené níže
Ty, kde jsou číslice pracují dobře, když už je tam slovo, nefungují a zobrazuje se výchozí stránka, tedy home.htm V adresním řádku se ...?page=dvojka napíše, takže chyba bude asi v druhém souboru Zkoušel jsem to s uvozovkama, bez... Nejede mi nic. Všechny soubory existují. Co mám špatně? Díky moc za odpověď menu.php <a href="?page=0">Home</a> <a href="?page=1">Položka1</a> <a href="?page=dvojka">Položka2</a> obsah.php <?php if($_GET["page"]==0) { ?> <?php include ("home.htm"); ?> <?php } elseif($_GET["page"]==1){include ("polozka1.htm");} elseif($_GET["page"]=="dvojka"){include ("polozka2.htm");} ?> |
||
G3n3sis19 Profil |
#2 · Zasláno: 12. 3. 2011, 15:57:07
zkus do obsah.php dát na začátek dvojka, to znamená
<?php if($_GET["page"]=="dvojka") { ?> <?php include ("polozka2.htm"); ?> <?php } elseif($_GET["page"]=="1"){include ("polozka1.htm");} elseif($_GET["page"]=="0"){include ("home.htm");} ?> pokud ani to nepomůže, dej na začátek <?php echo $_GET['page']; ?> |
||
Radek9 Profil |
#3 · Zasláno: 12. 3. 2011, 15:58:11 · Upravil/a: Radek9
Antti:
Dej ty čísla (v PHP scriptu) do uvozovek. (Možná by stačilo jen tu nulu.) G3n3sis19: To je zbytečnost. |
||
Antti Profil |
#4 · Zasláno: 12. 3. 2011, 16:18:11
Díky, pokročil jsem
Vše již funguje se slovy, ale neukazue se mi úvodní stránka Když jsem předtím otevřel "obsah.php" uházalo se mi "home.htm" a když jsem klikal na odkazy, obsah se měnil Teď se načte prázdná stránka, po kliknutí na odkaz Home se home.htm zobrazí Prosím, poraďte ještě, jak udělat, aby se mi ihned zobrazilo home.htm a pak se obsah měnil můj kód: <?php if($_GET["page"]=="home") { ?> <?php include ("home.htm"); ?> <?php } elseif($_GET["page"]=="jednicka"){include ("jedicka.htm");} elseif($_GET["page"]=="dvojka"){include ("dvojka.htm");} elseif($_GET["page"]=="trojka"){include ("trojka.htm");} ?> |
||
Lupa Profil |
#5 · Zasláno: 12. 3. 2011, 16:19:28
Podľa mojich vedomostí:
IF nadväzuje na ELSE či tebe Antti chýba. IFELSE môže byť viac, ale to by mala byť až len 3 možnosť. Nemám pravdu? |
||
1Pupik1989 Profil |
#6 · Zasláno: 12. 3. 2011, 16:21:16
A co takhle dát rovnou
include($_GET["page"].".htm"); Samozřejmě ošetřit File_exists. |
||
Tori Profil |
#7 · Zasláno: 12. 3. 2011, 16:25:27 · Upravil/a: Tori
Antti:
V té podmínce chybí ještě větev else (a tam bude include 'home.htm'). Použije se pokud a) $_GET[page] není definované, anebo b) nevyhovuje žádné z předchozích možností. Jinak [#6] je flexibilnější (nemusíte psát pro každou stránku podmínku). Je potřeba jen osekat vstup na samotné jméno souboru + zkontrolovat, že soubor existuje. Výchozí hodnota (vaše home.htm) musí být u obou způsobů řešení. |
||
Antti Profil |
#8 · Zasláno: 12. 3. 2011, 16:53:40
ANO! Děkuji všem, doplnil jsem else na home.htm a vše už pracuje jak má.
Znova - díky moc. Shrnutí pro případné budoucí tazatele: <?php if($_GET["page"]=="home") { ?> <?php include ("home.htm"); ?> <?php } elseif($_GET["page"]=="jednicka"){include ("jedicka.htm");} elseif($_GET["page"]=="dvojka"){include ("dvojka.htm");} elseif($_GET["page"]=="trojka"){include ("trojka.htm");} else{include("home.htm");} ?> |
||
Radek9 Profil |
#9 · Zasláno: 12. 3. 2011, 17:07:54
Antti:
Úplě by stačilo toto: (bez první podmínky) <?php $page = $_GET["page"]; if($page=="jednicka"){include ("jedicka.htm");} elseif($page=="dvojka"){include ("dvojka.htm");} elseif($page=="trojka"){include ("trojka.htm");} else{include("home.htm");} ?> |
||
Antti Profil |
#10 · Zasláno: 12. 3. 2011, 17:15:49
Opraveno, díky
|
||
1Pupik1989 Profil |
#11 · Zasláno: 12. 3. 2011, 17:20:06
<?php if(isset($_GET["page"])){ include($_GET["page"].".htm"); }else{ include('home.htm') }; ?> nebo <?php $strana=(isset($_GET["page"])) ? $_GET["page"] : "home"; include($strana."htm"); ?> Teď si teda nejsem jistý, jestli to mám dobře, ale princip je jasný :) |
||
Radek9 Profil |
#12 · Zasláno: 12. 3. 2011, 17:39:17
1Pupik1989:
Neověřuješ, jestli soubor existuje. |
||
1Pupik1989 Profil |
#13 · Zasláno: 12. 3. 2011, 18:23:51 · Upravil/a: 1Pupik1989
Radek9:
o tom už jsem psal. Toto neměl být hotový příklad, nýbrž vyobrazení myšlenky. O file_exists jsem psal předešlý post, stačí číst :) Navíc ve svém příkladu ho také nemáš, proč? <?php $strana=(isset($_GET["page"])) ? (File_Exists($_GET["page"])) ? $_GET["page"] : "404 : "home"; include($strana."htm"); ?> |
||
Tori Profil |
#14 · Zasláno: 12. 3. 2011, 18:37:41
1Pupik1989, Radek9:
Tak když už chcete být důkladní, dalo by se ještě prohnat vstup přes basename, eventuelně filtr povolených znaků. |
||
1Pupik1989 Profil |
#15 · Zasláno: 12. 3. 2011, 18:43:54
To už bych neřešil, pokud ta stránka neexistuje, hodí to "404". Pokud není page vyplněn, hodí to "home". No a pokud existuje, tak se načte.
|
||
G3n3sis19 Profil |
#16 · Zasláno: 12. 3. 2011, 18:49:56
1Pupik1989:
„o tom už jsem psal. Toto neměl být hotový příklad, nýbrž vyobrazení myšlenky. O file_exists jsem psal předešlý post, stačí číst :)“ a co takhle ?page=../../../etc/passwd pokud není safe_dir ?;) |
||
1Pupik1989 Profil |
#17 · Zasláno: 12. 3. 2011, 19:08:52 · Upravil/a: 1Pupik1989
To by asi nebylo moc dobrý, aby byla vidět absolutní cesta. Je to lepší jako "index.php?page=home", jelikož nikdo neví, kde se ten home nachází. Může být třeba až v podadresáři.
Ještě by byla možnost udělat to jako "case" a k hodnotám nastavit výstup. |
||
G3n3sis19 Profil |
#18 · Zasláno: 12. 3. 2011, 23:14:51
může to zkušet až se trefí. Jak říkáš, case je to nelepší co může být, používám to taky
|
||
TomasJ Profil |
#19 · Zasláno: 13. 3. 2011, 01:04:40 · Upravil/a: TomasJ
Já osobně používám tento script:
function InsertPage($page){ $dir = "pages/obsah/"; if(!$page){return include($dir.'uvod.php');} if(strchr($page,"/")){return include($dir.'403.php');} $page="pages/obsah/$page.php"; if(!file_exists($page)){return include($dir.'404.php');} $content=file_get_contents($page); if(!strlen($content)){return include($dir.'incomplete.php');} return include($page); } Pak normálně volám InsertPage($_GET['page']); |
||
Časová prodleva: 1 měsíc
|
|||
Petr1 Profil * |
#20 · Zasláno: 16. 4. 2011, 02:24:43
ahoj lidi před 4 roky jsem se taky věnoval psani stránek a rád bych se k tomu vrátil, bohužel většinu jsem už zapomněl :(
mam menu s odkazy <a href="?page=home">Home</a> <a href="?page=pozor">Pozor</a> a pak mam tělo kde by se ty odkazy měli zobrazit po kliknutí <?php if($_GET["page"]=="home"); { ?> <?php include ("home.html"); ?> <?php } if($_GET["page"]=="pozor"){include ("pozor.html");} if($_GET["page"]=="home"){include ("home.html");} else{include("home.html");} ?> už se s tim peru hrozně dlouho :( prosím poradíte mi ? musí ta stránka kde je php script končit příponou PHP ? dal jsem na stránky index.php ale pak mi ty stránky nenajedou a když tam dam index.html tak mi nefunguje ten script :( |
||
Keeehi Profil |
#21 · Zasláno: 16. 4. 2011, 08:05:24
Petr1:
Nech tam index.php a zapni si vypisování chybových hlášek. |
||
Petr1 Profil * |
aha děkuju tak sem tam přidal
<?php $strana=(isset($_GET["page"])) ? (File_Exists($_GET["page"])) ? $_GET["page"] : "404 : "home"; include($strana."htm"); ?> <?php if($_GET["page"]=="home"); { ?> <?php include ("home.html"); ?> <?php } if($_GET["page"]=="pozor"){include ("pozor.html");} if($_GET["page"]=="home"){include ("home.html");} else{include("home.html");} ?> ale ta stranka nenaběhne ... jako by to muselo mít koncovku .html Moderátor panther: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
panther Profil |
#23 · Zasláno: 16. 4. 2011, 11:21:08 · Upravil/a: panther
Petr1:
„ale ta stranka nenaběhne“ ... a kdybys měl zapnuté vypisování chybových hlášek, věděl bys, proč nenaběhne. Hned v první řádku máš syntaktickou chybu, což je vidět i na místním zvýraznění syntaxe. Dál by mě zajímalo, proč na téměř každém řádku ukončuješ a otevíráš PHP, proč nepíšeš do jednoho bloku. |
||
Petr1 Profil * |
#24 · Zasláno: 16. 4. 2011, 11:40:46
aha ... a poradil by jste mi co s tou chybou ?
jsem amatér a nějak zvlášť sem se PHP moc nevěnoval, jen jsem studoval to menu (abych nemusel psát indexovou stránku do kola) který mi dřív fungovalo ... |
||
panther Profil |
#25 · Zasláno: 16. 4. 2011, 11:42:41
Petr1:
„a poradil by jste mi co s tou chybou ?“ spočítej si uvozovky. |
||
Petr1 Profil * |
#26 · Zasláno: 16. 4. 2011, 11:51:05
tak už jsem smazal ty uvozovky před 404 ... ale jeto to samé nic nevypíše!
ten index.php vytvořil v pspad ... a skopíroval index.html a dal do index.php ... i s tím php scriptem ... je to chyba ? pamatuji si že jsem to takhle dělal i před 4 roky ... |
||
Petr1 Profil * |
#27 · Zasláno: 16. 4. 2011, 12:28:42
jde mi přesně o tohle http://www.youtube.com/watch?v=62h6Wr7heXk
takže musím teda dát do odkazu ještě <a href="?page=home">Home</a> <a href="index.php?page=pozor">Pozor</a> |
||
G3n3sis19 Profil |
#28 · Zasláno: 16. 4. 2011, 14:42:29 · Upravil/a: G3n3sis19
if (file_exists($_GET['page'])) { $strana = $_GET['page']; } else { if (isset($_GET['page'])){$strana = "404.htm";}else{$strana = "home.htm";} } |
||
Petr1 Profil * |
#29 · Zasláno: 16. 4. 2011, 16:38:44
tak konečně jsem to našel , před 4 roky jsem se to studoval tady
http://www.jakdelatweby.cz/php/include.php |
||
Časová prodleva: 14 let
|
0