Autor | Zpráva | ||
---|---|---|---|
tony2 Profil |
#1 · Zasláno: 8. 7. 2009, 19:14:44 · Upravil/a: tony2
Prosimvás potřebuju pomoct chci mít stránky poschovávané v adresářich např:
web/uvod.php php/date.php ... ale jaksi nemužu vymyslet jak zařídit aby to nahrávání prohledalo i jiné složky zkoušel jsem operátor OR,pole,různé pojmenování proměnné $dir,... <?php $page=$_GET["page"]; $dir ="url/"; $uvodni="uvod.php"; if ($page) { if (file_exists($dir.$page.".php")) include($dir.$page.".php"); else { include $dir."404.php"; } } else { include ($dir.$uvodni); } ?> |
||
fuckin Profil |
#2 · Zasláno: 8. 7. 2009, 19:21:01
a muzes treba rict kde je problem? Z tveho popisu nelze nic vycist, dale nechapu proc tu uvadis cely index i s html, staci jen ta podminka kde je problem ne?
|
||
panther Profil |
#3 · Zasláno: 8. 7. 2009, 19:27:03
tony2
if (file_exists($dir.$page.".php")) include($dir.$page.".php"); elseif (file_exists($dir.$page.".php")) include($dir.$page.".php"); elseif (file_exists($dir.$page.".php")) include($dir.$page.".php"); Zkus místo $dir do každé podmíniky dosadit možné varianty cesty k souboru, případně si ty cesty všechny nahaž do proměnné (tady by asi bylo dobré pole, nevím, kolik těch možností tam je). |
||
tony2 Profil |
#4 · Zasláno: 8. 7. 2009, 19:38:09 · Upravil/a: tony2
Ty elseif to jsem předtím něco zkoušel a zapomněl jsem to umazat jo a to pole a a ty varianty taky...
tak teď to mám takto: <?php $page=$_GET["page"]; $dir= array ("web/ , php/ , html/"); $uvodni="uvod.php"; if ($page) { if (file_exists($dir.$page.".php")) include($dir.$page.".php"); else { include ($dir."404.php"; } } else { include ($dir.$uvodni); } ?> |
||
valecekm Profil |
#5 · Zasláno: 8. 7. 2009, 22:31:33
Jak chces aby ti to prohledavalo. Myslis to tak , kdyz se nenajde danej soubor v jedne slozce, tak at se skusi prohledat v jine?
|
||
valecekm Profil |
tony2
Pokud jsi to tak myslel aby se ti skusili prohledat vsechny slozky, kdyby se to v te prvni nenaslo, tak by se hledalo v druhe a kdyby ani v te se to nenaslo, tak v tech dalsich a kdyby se to nenaslo v zadne, tak by to pripojilo tu chybovku. Ale kdyby se to naslo, tak by to pripojilo onen vyzadovany soubor, tak tady mas zdrojac: <?php $page=$_GET["page"]; $dir= array ('web/' , 'php/' , 'html/'); $error_nenalez = 'slozkachyb/404.php'; $uvodni="uvod.php"; if (isset($page)) { for ($i=0; $i<count($dir); $i++){ if (file_exists($dir[$i].$page.".php")) { include($dir[$i].$page.".php"); break; } else { if ( ($i==(count($dir))-1) and (!file_exists($dir[$i].$page.".php")) ){ include ($error_nenalez); } else {continue;} } } } else { include ($dir.$uvodni); } ?> OTESTOVANO A FUNKCNI, ted zalezi natobe jestli si stim poradis. Ja jsem to testoval u sebe a hledal jeden soubor a misto tech include sem vypisoval hlasky, takze sem videl co to dela a jestli to uspelo nebo ne. Moderátor Alphard: Vkládej prosím kód mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
japlavaren Profil |
#7 · Zasláno: 8. 7. 2009, 23:56:40
valecekm
preco nepouzivas foreach() a naco pises take divne kody. pri kazdom cykle to mus pocitat count oprava: $dir=array ('web/' , 'php/' , 'html/'); $error='slozkachyb/404.php'; $uvod='uvod.php'; if (isset($page)) { $ok=false; foreach($dir AS $d) { if( file_exists("$d$page.php") ) { include "$d.$page.php"; $ok=true; break; } } if( !$ok ) include $error; } else include $uvod; ?> |
||
valecekm Profil |
#8 · Zasláno: 8. 7. 2009, 23:58:40 · Upravil/a: valecekm
Moderátor
ok. Omlouvam se a i za ten predeslej prepis. diky ; ) japlavaren Kazdeho napadlo neco jineho :-) . Neboj foreach znam taky, jestli myslis ze ne, ale v tuto chvilku me bleskl hlavou tento cyklus, tak sem to narychlo stvoril :-). Tod vse. Pokud se ti to zda byt divne a nevyznas se v tom, tak k tomu nemam co dodat. Ale je pravda, ze to moje reseni je pomalejsi to uznavam. ;-) |
||
tony2 Profil |
#9 · Zasláno: 9. 7. 2009, 09:40:34
Tak použil jsem to řešení s for (to víc chápu :D ) ale mám tam problém nechce mě to načíst date.php (píše to nenalezeno) když je to někde zahrabané musím jinak odkazovat?
mám to ve složce php/date.php a odkazuju na to ?page=date.php |
||
tony2 Profil |
#10 · Zasláno: 9. 7. 2009, 09:44:14
Jo a nechce mi to nahrát úvod ten je ve složce web/
|
||
valecekm Profil |
#11 · Zasláno: 9. 7. 2009, 11:29:31 · Upravil/a: valecekm
tony2
Neodkazuj nato ?page=date.php , ale jen ?page=date - koncovka .php se doplni automaticky include($dir[$i].$page.".php"); Pokud bys chtel prohledavat i jine slozky, tak si je napis do toho pole $dir. Jeste to trosku teda upravim, aby to tolik nezatezovalo, pri kazdym pruchodu to musi zjistovat count, jak psal japlavaren. Jinak takto by to melo behat, stacilo pridat pouze k tomu uvod celou adresu. <?php $page=$_GET["page"]; $dir= array ('web/' , 'php/' , 'html/'); /*pole obsahujici slozky, ktere se maji prochazet*/ $error_nenalez = 'slozkachyb/404.php'; /* kdyz se nic nenajde, tak je tu errorova stranka*/ $uvodni=$dir[0]."uvod.php"; /* uvod. slozka slozena z PRVNIHO prvku pole $dir(tj web/)+zbytek nazvu souboru*/ // nebo muzes primo napsat $uvodni="web/uvod.php"; ...tj uz natobe :-) // proc $dir[0]."uvod.php" ?, protoze beru prvni prvek z pole(tj slozka web/) a pole nezacina jednickou ale vzdycky 0 $obsah=count($dir); /*pocet prvku v poli(cislo, ale to uz zacina od 1,nikoli od 0*/ if (isset($page)) { for ($i=0; $i<$obsah; $i++){ // $i urcuje ktery prvek se ma vytahnout, zaciname na 0(tj1.),pokracovat se bude pokud bude $i mensi jak $obsah(poc.prv.) // a pri kazdym dalsim pruchodu se k $i pricte +1 ($i++), aby se skusila otestnout dalsi slozka v poli if (file_exists($dir[$i].$page.".php")) { /*pokud soubor existuje*/ include($dir[$i].$page.".php"); /* pripoji se*/ break; /* a cyklus FOR skonci-BREAK */ } else {/*pokud podm. nebude splnena, ze sb. existuje*/ // zjistime jestli cyklus prosel vsechny prvky v poli ..$i==($obsah)-1 "-1 kvuli tomu,ze jsme zacinali 0" // a jeste pro jistotu overime jeslti opravdu nebyl nalezen !file_exists ... vykricnik znaci zapor(negace) if ( ($i==($obsah)-1) and (!file_exists($dir[$i].$page.".php")) ){ include ($error_nenalez); /* tak pripojime chybovvou stranku*/ } // pokud ovsem neni splnena predesla podminka, pokracujeme dale // CONTINUE preskoci na zacatek cyklu a jede znovu else {continue;} } } } else { include ($uvodni); } ?> Kdyby nastal nejakej dalsi problem, tak me uz pisni na mail, at to tu zbytecne neplnime drobnejma vecma. valecekm(uzenac)seznam.cz |
||
tony2 Profil |
#12 · Zasláno: 9. 7. 2009, 11:38:53
jo pěkné díky vyzkouší jestli funguje jo a to pole mě tak nemusíš vysvětlovat sem o tom četl včera pul hodiny :D
|
||
tony2 Profil |
#13 · Zasláno: 9. 7. 2009, 11:45:21
Jo hou jo ste dobří díky všichni!
|
||
Časová prodleva: 15 let
|
0