Autor Zpráva
rybarada
Profil
Zdravím, řeším vkládání include (http://polopate.jakpsatweb.cz/?page=include2). Mám hlavní stránku, v ní odkazy a chci, aby se měnil hlavní text (např.při kliknutí na kontakty se zobrazí kontakty, při klinutí na onás se zobrazí text o nás apod...) a já to chci tak, že právě ta hlavní stránka bude pořád stejná, a jen se bude do ní vkládat jiný hlavní obsah při kliknutí na odkaz. Snad to někdo pochopí a pomůže mi, díky Adam
Taps
Profil
rybarada:
to je hned následující díl http://polopate.jakpsatweb.cz/index.php?page=include3
juriad
Profil
To je popsané na té následující stránce: http://polopate.jakpsatweb.cz/?page=include3
Budeš mít jeden soubor index.php, který bude podle proménné $_GET['page'] includovat různé soubory. Pak tvé odkazy budou:
index.php?page=onas, index.php?page=kontakty atp.
rybarada
Profil
To jsem právě nepochopil, ale potřebuju to vědět :(


respektive bych potřeboval ukázku celého kodu :)
juriad
Profil
Zkus se víc rozepsat. Vypsat hodnotu parametru, se zdá, umíš. Jediné, co musíš přidat, je funkce include.

V nejjednodušším případě to bude takto:
<?php
include $_GET['page'];
?>

Klidně si to vyzkoušej. Dej toto do souboru index.php a vedle něj vytvoř soubory onas (bez koncovky) a kontakty.
Pak návštěva stránky index.php?page=onas zobrazí obsah souboru onas.

Toto ale má hromadu chyb:
1) Co když ten parametr chybí.
2) Co když obsahuje neplatnou hodnotu.
3) Co když obsahuje něco nebezpečněho - pokud zadáš index.php?page=index.php, tak se bude PHP zblázní.
4) Vhodné je mít soubory k includu v nějakém adresáři oddělené od zbytku.
5) Vhodné je je mít s nějakou koncovkou, je vcelku jedno jakou.
6) Znovu se zamyslet nad zabezpečením.
Některé z těchto chyb jsou v tom článku rovněž adresovány a vyřešeny.
rybarada
Profil
a codělápřesně tedy tohle? include $_GET['page'];


Notice: Undefined index: page in C:\ComplexWebServer\http_docs\procvicko\index.php on line 2

Warning: include() [function.include.html]: Failed opening '' for inclusion (include_path='.;C:/ComplexWebServer/php5/include') in C:\ComplexWebServer\http_docs\procvicko\index.php on line 2



dbrý chybka se vloudila
juriad
Profil
Ta notice říká, že nebyl předán parametr page.
Ten warning řiká, že se pokusil includnout soubor, který neexistuje - jeho jméno bylo '' (prázdné).

Jedná se přesně o první dva body, které jsem zmínil výše. Řešením je použít isset a file_exists nebo něco podobného. Podmínkám (if) se ale nevyhneš.


rybarada:
a codělápřesně tedy tohle? include $_GET['page'];

$_GET['page'] toto je přístup k prvku s indexem 'page' v poli jménem $_GET. Jedná se o superglobání pole, které obsahuje všechny parametry, které byly zadány v URL.
include je příkaz, který chce jeden argument typu řetězec.

Lze to tedy zapsat také jako:
$stranka = $_GET['page'];
include $stranka;
kde $stranka je obyčejná proměnná.
rybarada
Profil
už chápu, díky moc


rybarada:
jo, a to, že zatím includovaným souborem není žádná přípona, to tomu nijak nevadí, že? :)
juriad
Profil
To jen Windows má v oblibě přípony, nejsou však povinné. Soubor nemusí mít příponu. Ale pokud ji tam chceš mít, tak to změň na:
$stranka = $_GET['page'] . '.pripona'; # obvykle bude přípona asi php (aby se to otevíralo v rozumném editoru)
include $stranka;
kde tečka je operátor spojení řetězců.

A pak samozřejmě musíš všechny ty soubory přejmenovat, aby měly tu příponu. Alternativně můžeš zadávat parametr page i s příponou, ale předpokládám, že to není to, co bys chtěl dělat. Do teď jsi vlastně PHP říkal, aby includnul soubor, který se jmenuje stejně jako je hodnota parametru page.
rybarada
Profil
ok, ještě jenou díky

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: