Autor Zpráva
HGD
Profil
Mam takovej dotaz, púorád nechápu ty odkazy v php, jak se vpíšou ve formáto index.php?admin=clanekčet sem si to tady, ale nepochopil sem jak to vypisovat do *.php, aby se mi změnilo jen kus stránky, čili jako FRAMY, a abych měl po přihlášení menu jiný, pro admina
Peca
Profil
http://polopate.jakpsatweb.cz/index.php?page=trpaslik-get
Možná to není zrovna nejlepší stránka, ale pročti si to tam.
HGD
Profil
tak sem si tam přečet všechno ohledně PHP asi 10x, ale stejně to nechápu, zkoušel sem toto:
MENU
        <ul>

<li><a href="index.php?page=uvod">Index</a></li>
<li><a href="index.php?page=about">O nás</a></li>
<li><a href="index.php?page=faq">FAQ</a></li>
<li><a href="index.php?page=contact">Kontakty</a></li>
</ul>


INDEX
<?

$soubor = "alles.php";
if (!file_exists($soubor)) {
$soubor = "index.php";
}
include ($soubor);
?>


ALLES
<?php

$stranka = $_GET['page'];
if (!isset($_GET['page'])) {
$stranka = "uvod";
} else {
$stranka = $_GET['page'];
}
$_GET['uvod']="
<p>index na stránce</p>";
?>

Ale nevim jak to udělat v tom souboru ALLES, sem myslel že tam dam obsah všech stránek a pak budu volat jenom jednotlivý části kódu, nevim jak to vypsat
Alphard
Profil
http://firstpage.wz.cz/?page=web_bez_ramu
HGD
Profil
Díky moc, tam už sem to konečně našel, ale ještě jedna věc, dalo by se udělat, aby obsah 2 stránek byl na jedný a fungovalo by to stejně?
krteczek
Profil
HGD: můžeš mít obsah celého webu se 150 stránkama v jednom souboru, ale asi by se to špatně udržovalo
jedno z řešení jak bezpečně zobrazovat jednotlivé stránky je například uložit názvy stránek do pole:

$stranky = array(
'nazev' => './cesta/k/souboru.inc.php',
'jina-stranka' => './jina/cesta/jiny/soubor.inc.php',
);

potom jen funkcí pro zjištění existence klíče:

if(!empty($_GET['page']))
{
if(array_key_exists($_GET['page'], $stranky))
{
//v poli existuje klíč shodný s obsahem $_GET['page'], získáme cestu k souboru
$cesta = $stranky[$_GET['page']];

//ověříme, jestli existuje soubor (důvěřuj ale prověřuj)
if(file_exists($cesta))
{
if(@include($cesta))
{
//soubor je includován můžeš ho použít
}
else
{
//soubor se nepodařilo includovat (asi nemáš právo přístupu k souboru)
}
}
else
{
//soubor neexistuje (bud byl smazán, nebo je špatně cesta k souboru)
}
}
else
{
//neexistuje v poli klíč shodný s $_GET['page'],
//můžeme zavolat třeba chybovou stránku
}
}
elseif(!empty($_SERVER['QUERY_STRING']))
{
//v adrese je něco co nečekáme, zobrazíme chybovku
}
else
{
//v adrese neni nic , zobrazíme úvodní stránku
}

celý proces vypadá následovně:
1. ověří se existence proměnné $_GET['page'] a že něco obsahuje == není prázdná, pokud je prázdná, nebo neexistuje ověří jestli je v adrese něco dalšího, pokud ano tak nabídneme chybovou stránku, pokud v adrese nic není zobrazíme ůvodní stránku

2. ověří zda je $_GET['page'] shodná s některým z klíčů pole $stranky, pokud není, nabídneme chybovou stránku

3. pokud je bod 2 true (ano) je z pole získána cesta k souboru a uložena do $cesta a ověří existenci souboru v proměnné $cesta, pokud neexistuje nabídneme chybovou stránku

4. pokusí se připojit soubor v $cesta do skriptu (include), pokud se to povede, vykoná se to co je v tom souboru, pokud ne, opět chybová stránka.
HGD
Profil
No tak sem to nakonec použil, že mam každej soubor zvlášť a používam tohle:
<?php

$page=$_GET["page"];
$index="uvod.php";
if ($page) {
if (file_exists($page.".php"))
include($page.".php");
else { include $index; }
}
else {
include ($index);
}
?>

a potřeboval bych poradit, aby když zadam do adresního řádku jenom adresu webu, tak aby se hned našetl uvod.php
Alphard
Profil
když zadam do adresního řádku jenom adresu webu, tak aby se hned našetl uvod.php
co je potom tohle? :-)

$index="uvod.php";
if ($page) {
...
}
else {
include ($index);
}


jen bych to upravil:
if (!isset($_GET['page']))
include "uvod.php";
HGD
Profil
no mě to hází nějakou chybu, já to zatim zkoušim na localu, tak uvidim, na webu to možná poběží normálně.
Ta podmínka IF. když jí použiju tak už ta navigace nefunguje, ale to je asi jenom kvůli nějakej validaci nebo proč ne?

Ale to už je fuk, potřeboval bych poradit, když mam:
echo "<A href="index.php?$url">Hlavní strana</A><br>";

tak bych tam potřeboval místo toho doplnit, aby místo odkazu mi to načetlo rovnou soubor index2.php
djlj
Profil
tak bych tam potřeboval místo toho doplnit, aby místo odkazu mi to načetlo rovnou soubor index2.php
echo "<A href="index2.php">Hlavní strana</A><br>";
Pavel Prochazka.zde.cz
Profil *
HGD
ta stranka cos dal do prvniho dotazu je jen mechanizmus. A uz zalezi na tobe zda ho a jak budes vyuzivat....Ten jen zkontroluje zda pozadovany soubor existuje a pokud ne, tak skoci ne funkci s vypisem neexistujici stranky.... Ty odkazi se za index.php se useknou a jsou dostupne jako parametr, ktery musi tvuj script nasledne zpracovat, zalezi kolik mas parametu, musis si stanovit nejakou strukturu. Ale za vestinou za index.php nasleduje nazev stranky a dalsi parametry pro ovladani dane stranky, muzes si to vyzkouset na mem webu, ja mam presne stejne ovladani stranek jaky pozadujes a cerpal jsem ze stejneho zdroje jako ty. Doporucuji ti si stahnout ukazkovy web co tam nabizeji ( nejaky vyrtualni hudebni web), samozrejme uplne posledni werzi (pto to musis skocit na posledni clanek) a potom si php kod zacni krokovat a sleduj co se deje. Uvidas ze je to slene primitivni a pritom sqvele....:), me to vyresilo hodne ruznych problemu....
HGD
Profil
echo "<A href="index2.php">Hlavní strana</A><br>";
djlj -hele zase takovej magor nejsem!!!, tohle je mi k ničemu, pořád je to odkaz, ale já potřebuju aby se mi načet index2.php a když tam dam include "index2.php"; tak mi to hodí parse error
Alphard
Profil
když tam dam include "index2.php"; tak mi to hodí parse error
tipuji to na chybějící středník na předchozím řádku
HGD
Profil
tím to neni, sem jenom zaměnil to ECHO za INCLUDE a nic
Pavel Prochazka.zde.cz
Profil *
pokud se jdna o tento redek:
echo "<A href="index2.php">Hlavní strana</A><br>";

tsk ti to NIKDY NEPOJEDE!!! Podevej se na uvozovky..... Bud pouzij znak a nebo cely retezec dej do apostrofu....

echo "<A href="index2.php">Hlavní strana</A><br>";

nebo

echo '<A href="index2.php">Hlavní strana</A><br>';

jinak to to nepojede......
HGD
Profil
ale já tam nechci vypisovat odkaz na index2.php, ale aby mi to rovnou tu stránku načetlo
Pavel Prochazka.zde.cz
Profil *
HGD
tezko rici, kod vypada ok, mas debuder? odkrokuj si kod a divej se co mas v promennych, urcite tam bude nejaky bug....
Toto téma je uzamčeno. Odpověď nelze zaslat.