Autor | Zpráva | ||
---|---|---|---|
crooner Profil * |
#1 · Zasláno: 21. 3. 2011, 17:52:46
Zdravím Vás, prosím potřeboval bych poradit pro Vás s maličkostí, pro mě s nepřekonatelným problémem. Nikdy jsem nebyl schopen se php naučit a teď hořce lituji.
Mám vytvořeny stránky, kde si grafik vymyslel celkem náročné kousky. Takže i když jsem to stlačil na minimum, velikost stránek narůstá. Potřebuji tedy všechny odkazy měnit jen v divu. Mám tento php script <?php $root = ""; $id = $_REQUEST['id']; $obsah = $id. ".php"; if (File_Exists ($obsah)): include $obsah; endif; ?> a tímto se na něj odkazuji: href="index.php?id=test" a teď k problému: 1) potřebuji do scriptu nějak zahrnout adresář kde bude uložen zbytek obsahu, abych ho nemusel mít v kořenovém adresáři. 2) nevím jak zařadit abych měl při načtení index.php div vyplněn úvodním textem Poradíte mi prosím někdo? už jsem to asi tak 100x přepsal a nahrál na web a přečetl tunu stránek a prostě jsem na to nepřišel. Víte jak na to? Předem Díky |
||
YoSarin Profil |
#2 · Zasláno: 21. 3. 2011, 18:03:42 · Upravil/a: YoSarin
Soubor index.php umístěný v rootu webu:
$path = './content/uvod.php'; if (!empty($_REQUEST['id'])) { $name = $_REQUEST['id']; $name = preg_replace('~[^a-z0-9\-_+]+~i', '-', $name); // odstraníme znaky které by mohly způsobit nějaký problém if (file_exists('./content/' . $name . 'php')) { $path = './content/' . $name . 'php'; } else { $path = './content/404.php'; // chybová stránka pokud uživatel leze na stránku která neexistuje } } include $path; Ostatní soubory budou ve složce content/ |
||
crooner Profil * |
#3 · Zasláno: 21. 3. 2011, 19:06:33
Ty jo fakt super díky moc, hned to testnu, doufám, že tam nemam nějak binec a všechno poběží:)
Ještě jednou dík |
||
crooner Profil * |
aaa tak někde tam je chybička, nejspíš něco není uzavřené, ale vůbec nevim kde,
path = './page/test.php'; if (!empty($_REQUEST['id'])) { $name = $_REQUEST['id']; $name = preg_replace('~[^a-z0-9\-_+]+~i', '-', $name); // odstraníme znaky které by mohly způsobit nějaký problém if (file_exists('./page/' . $name . 'php')) { $path = './page/' . $name . 'php'; } else { $path = './page/404.php'; // chybová stránka pokud uživatel leze na stránku která neexistuje } } include $path; Moderátor panther: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
crooner Profil * |
#5 · Zasláno: 21. 3. 2011, 19:15:40
to co je tučně je oranžové ve scriptu
|
||
crooner Profil * |
#6 · Zasláno: 21. 3. 2011, 19:27:35
sorry, moc se omlouvám, jsem blbec:), už do toho čumim asi moc dlouho:)
|
||
crooner Profil * |
#7 · Zasláno: 21. 3. 2011, 21:26:04
tak se mi tam nakonec stejně vloudila chyba, nefungují mi odkazy nevím jestli se odkazuji spravne máme cestu
href="index.php?id=sluzby" a toto to píše: Warning: main(): Unable to access ./page/404.php in /3w/borec.cz/c/crooner/index.php on line 54 Warning: main(./page/404.php): failed to open stream: nenĂ souborem ani adresářem in /3w/borec.cz/c/crooner/index.php on line 54 Warning: main(): Failed opening './page/404.php' for inclusion (include_path='.:/usr/local/lib/php') in /3w/borec.cz/c/crooner/index.php on line 54 chyba je na řádku include $path; poradíte mi pls? |
||
panther Profil |
#8 · Zasláno: 21. 3. 2011, 21:27:18
crooner:
vem si slovník a zkus si přeložit, co znamená: „failed to open stream: není souborem ani adresářem“ (diakritiku jsem opravil). |
||
crooner Profil * |
#9 · Zasláno: 21. 3. 2011, 21:48:53
vím přesně co se tam píše, ale nevím jak to opravit
|
||
panther Profil |
#10 · Zasláno: 21. 3. 2011, 21:50:15
crooner:
„ale nevím jak to opravit“ vytvořit soubor 404.php v adresáři page , který bude ve stejném adresáři jako soubor s inkriminovaných scriptem (aneb zjisti si, jak fungují relativní adresy).
|
||
crooner Profil * |
#11 · Zasláno: 21. 3. 2011, 21:57:47
ok takže to jsem udělal, už mě to nefackuje za neexistující soubor, vytvořil jsem ho prázdný a teď ho to vesele zobrazuje, ale spíše bych potřeboval zobrazit ty s textem, v tom scriptu mi nefungují to odkazování na ostatní php soubory
|
||
panther Profil |
#12 · Zasláno: 21. 3. 2011, 22:02:07
crooner:
vypiš si, co je v proměnné $name , jaký soubor se snažíš includovat a který testuješ na existenci. Já už tu chybu vidím - a ty víš, kde hledat.
Ono se někdy vyplatí přemýšlet a ne jen slepě kopírovat chyby jiných (YoSarin tam vyrobil chybu, kterou ty jsi tam prve neměl). |
||
crooner Profil * |
#13 · Zasláno: 21. 3. 2011, 22:08:11
ok budu hledat, ale myslím, že tak za hodinu napíšu, že stejně nevím když do té doby neusnu, ale dík za snahu udělat ze mě programátora php;)
|
||
crooner Profil * |
#14 · Zasláno: 21. 3. 2011, 22:15:19
nebudu to protahovat, prostě tam nic nevidim, php je pro mě velká neznámá, jsem rád, když rozluštim co plní jakou funkci, ale abych si ti byl jistej to teda vážně nejsem
|
||
panther Profil |
#15 · Zasláno: 21. 3. 2011, 22:20:23 · Upravil/a: panther
crooner:
if (file_exists('./page/' . $name . '.php')) { $path = './page/' . $name . '.php'; $name je název stránky, že ti z toho reguláru vyleze to, co očekáváš.
|
||
YoSarin Profil |
#16 · Zasláno: 21. 3. 2011, 22:24:20
crooner:
Ha, pardon za chybu, trochu jsem se v těch tečkách ztratil, panther má samozřejmě pravdu. |
||
crooner Profil * |
#17 · Zasláno: 21. 3. 2011, 22:28:05
no jo, ty jo tak to bych tu byl asi do rána, díky moc, už to šlape, ještě spousta grafických úprav a je hotovo:)
|
||
crooner Profil * |
#18 · Zasláno: 22. 3. 2011, 09:51:48
prosím Vás měl bych na Vás ještě jeden dotaz. tuhle prasárnu jsem na stránkách dělat pro to aby všechny obrázky, odkazy atd.. zůstaly statické a načítal se pouze obsah div, ale jak jsem právě zjistil tak to moc nefunguje, po kliknutí na odkaz celé stránky zhasnou a po chvíli se zobrazí se změněným obsahem. nevíte co je špatně nebo je to normální? či jak toto vyřešit?
|
||
YoSarin Profil |
#19 · Zasláno: 22. 3. 2011, 11:15:15
crooner:
To je normální - pokud bys chtěl dynamickou změnu části obsahu, tak to musíš udělat s pomocí javascriptu. Ale za normálních okolností by obrázky apod. měly zůstat v cache, takže reload celé stránky by neměl uživateli nijak vadit. Existuje pár problémů, kterým se použitím PHP vyhneš a při použití javasctiptu (resp. AJAXu) jim musíš věnovat zvláštní pozornost. Jedním z nich je například historie prohlížeče - při dynamické změně stránky musíš změnit i url, aby se uložila do historie prohlížeče (nejčastěji pomocí #kotvy). Zároveň musíš zajistit aby při zpětném přechodu na tento odkaz se načetl odpovídající obsah (tzn. hlídat změnu #kotvy). K tomu musíš - samozřejmě nemusíš, nikdo tě k tomu nedonutí, ale je to vhodněší. |
||
crooner Profil * |
#20 · Zasláno: 22. 3. 2011, 15:50:45
a jak to má řešené slečna tady? http://www.nabytek-homer.cz/satniskrine.html tej to ani nemrkne? z kódu jsem nic nevyčetl
|
||
YoSarin Profil |
#21 · Zasláno: 22. 3. 2011, 18:14:43
crooner:
Buď pravděpodobně velmi podobně k tomu, co jsme ti tu poradili, nebo jen čistě statické, bez PHP. |
||
Časová prodleva: 13 let
|
0