Autor Zpráva
Antti
Profil
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
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']; ?>
a vypiš co ti to na začátku ještě před samotnou stránku vypíše
Radek9
Profil
Antti:
Dej ty čísla (v PHP scriptu) do uvozovek. (Možná by stačilo jen tu nulu.)

G3n3sis19:
To je zbytečnost.
Antti
Profil
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
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
A co takhle dát rovnou
include($_GET["page"].".htm");


Samozřejmě ošetřit File_exists.
Tori
Profil
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
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
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
Opraveno, díky
1Pupik1989
Profil
<?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
1Pupik1989:
Neověřuješ, jestli soubor existuje.
1Pupik1989
Profil
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
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
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
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
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
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
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']);
Petr1
Profil *
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
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
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 *
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
Petr1:
a poradil by jste mi co s tou chybou ?
spočítej si uvozovky.
Petr1
Profil *
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 *
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> 
6:32 ?
G3n3sis19
Profil
if (file_exists($_GET['page']))
{
 $strana = $_GET['page'];
}
else
{
 if (isset($_GET['page'])){$strana = "404.htm";}else{$strana = "home.htm";}
}
Petr1
Profil *
tak konečně jsem to našel , před 4 roky jsem se to studoval tady
http://www.jakdelatweby.cz/php/include.php

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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