| 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: 16 let
|
|||
0
).