Autor | Zpráva | ||
---|---|---|---|
crooner Profil * |
#1 · Zasláno: 17. 2. 2013, 12:38:33
prosím o radu, toto je část kodu pro vkládání, řešil jsem to tu dříve, nakonec jsem kod rozchodil. ale potřeboval bych poradit jaký je nejlepší zápis, pro toto:
první if je jasné, vkládá soubory ze složky nabidka druhe else if momentálně ze složky pily_hobby, ale jak to mám prosím zapsat, když potřebuji, poslední složka byla proměnná, znám všechny složky a v jedné se bude nacházet soubor, který potřebuji vložit jak na to? přes pole nebo postupně je vypsat všechny to je asi nesmysl ne? if (file_exists('./html/nabidka/' . $name . '.php')) { $path = './html/nabidka/' . $name . '.php'; } elseif (file_exists('./html/nabidka/pily_hobby/' . $name . '.php')) { $path = './html/nabidka/pily_hobby/' . $name . '.php'; }else elseif (file_exists('./html/nabidka/'. $slozka .'/' . $name . '.php')) { $path = './html/nabidka/'. $slozka .'/'. $name . '.php'; |
||
Alphard Profil |
#2 · Zasláno: 17. 2. 2013, 12:59:39
Vy předem nevíte, kde je daný soubor? Jestli máte whilelist, projít cyklem, jinak by mohl pomoci glob().
|
||
crooner Profil * |
#3 · Zasláno: 17. 2. 2013, 13:03:31
já to samozřejmě vím, ale nechci natvrdo vypisovat 30 adresářů do podmínky
|
||
crooner Profil * |
#4 · Zasláno: 17. 2. 2013, 16:27:41
nebyl by jste prosím někdo ochotný udělat mi nástřel? já to asi dohromady nedám:( tady je celý kod
<?php $path = './html/nabidka/pily_hobby.php'; $slozka = array ("pily_hobby", "pily_farma", "pily_profi"); 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('./html/nabidka/' . $name . '.php')) { $path = './html/nabidka/' . $name . '.php'; } elseif (file_exists('./html/nabidka/'. $slozka.'/' . $name . '.php')) { $path = './html/nabidka/'. $slozka.'/' . $name . '.php'; }else { $path = './html/404.php'; // chybová stránka pokud uživatel leze na stránku která neexistuje } } include $path; ?> |
||
Alphard Profil |
#5 · Zasláno: 17. 2. 2013, 16:34:59
glob() dokáže prohledat více adresářů, např.
print_r(glob('../*/a_08.jpg')); |
||
crooner Profil * |
#6 · Zasláno: 17. 2. 2013, 16:55:31 · Upravil/a: crooner
nj jenže v php je pro mě pořád španělská vesnice kam to mam umístit:)
asi by to mělo být nějak takto, že? $slozka= glob('./html/nabidka/*/'.$name); , ale nevím jak to vpasovat do kodu
|
||
crooner Profil * |
#7 · Zasláno: 18. 2. 2013, 00:12:09
poradíte mi prosím jak to řešit? možná by mi stačilo kdybych dokázal nějak do proměnné dostat id stránky na, které stojím a z které se odkazuji dál. protože bych mohl stejně tak pojmenovat složky. už jsem vyzkoušel x postupů a žádný mi nešlape. nevím jak tam dostat tu složku. a výpisem každé složky zvlášť do podmínky, to nevím jestli je správné.
|
||
Alphard Profil |
#8 · Zasláno: 18. 2. 2013, 00:20:53
Já jsem vám poradil klíčovou funkci, sám jste přišel na tvar crooner [#6], který potřebujete, jen tam asi chybí extenze
.php . V $slozka bude pole s výsledky, tedy buď kompletní cesta, nebo prázdné pole. Tak přemýšlejte dál, krok po kroku. Našlo se něco? count() Ano? První výskyt je pod klíčem 0 a máte cestu k souboru.
|
||
crooner Profil * |
#9 · Zasláno: 18. 2. 2013, 09:07:29 · Upravil/a: crooner
tak jsem pokročil takto, při testu proměnné složka to vypisuje celou cestu, a pořád se mi v prohlížeči objevuje slovo array a přitom ho tu ani nemám. každopádně, stránka se ještě nenačte:)
<?php $path = './html/nabidka/pily_hobby.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 $slozka= glob('./html/nabidka/*/'.$name. '.php'); echo ($slozka[0]); //test proměnné echo $slozka; if (file_exists('./html/nabidka/' . $name . '.php')) { $path = './html/nabidka/' . $name . '.php'; } elseif (file_exists('./html/nabidka/'. $slozka[0].'/' . $name . '.php')) { $path = './html/nabidka/'. $slozka[0].'/' . $name . '.php'; }else { $path = './html/404.php'; // chybová stránka pokud uživatel leze na stránku která neexistuje } } include $path; ?> málem bych zapomněl tu cestu to napíše správně, jenže asi potřebuji jenom ten soubor v proměnné, že *adresář |
||
crooner Profil * |
#10 · Zasláno: 18. 2. 2013, 12:30:27 · Upravil/a: crooner
takto by to asi fungovalo, ale asi to nebude úplně správné řešení, nicméně webzdarma nepodporuje příkaz glob a pořád se mi tam objevuje napsané array
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 $slozka= glob('./html/nabidka/*/'.$name. '.php'); $cesta = $slozka[0]; echo $slozka; if (file_exists('./html/nabidka/' . $name . '.php')) { $path = './html/nabidka/' . $name . '.php'; } elseif (file_exists($cesta)) { $path = $cesta; tak array je fuč, měl jsem tam nesmyslně znovu echo strašně se omlouvám za spam, ale prosím jen poradit jak to mám zapsat, vypadá to, že příkazy jsou správně a směrování funguje, php se učim a vůbec nevim jak vložit další podmínku, představoval jsem si to takto, ale samozřejmě to nefunguje, jedná se o část if($result..... jak to mám zapasovat do kodu, když bude splněna podmínka tak bude pokračovat elseif jinak skočí na else? <?php $path = './html/nabidka/pily_hobby.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('./html/nabidka/' . $name . '.php')) { $path = './html/nabidka/' . $name . '.php'; } $slozka= glob('./html/nabidka/*/'.$name. '.php'); $result = count ($slozka); if ($result!=0){ $cesta = $slozka[0]; } elseif (file_exists($cesta)) { $path = $cesta; }else { $path = './html/404.php'; // chybová stránka pokud uživatel leze na stránku která neexistuje } } include $path; ?> |
||
abc Profil |
#11 · Zasláno: 18. 2. 2013, 13:35:30
if ($result > 0) |
||
crooner Profil * |
#12 · Zasláno: 18. 2. 2013, 14:31:13
tak znaménkem to není
|
||
crooner Profil * |
#13 · Zasláno: 18. 2. 2013, 20:13:23
jak to ma prosim vypadat?aby se to zpracovalo v te posledni podmince?je pro me dulezite se to naucit,ale nikde to nemohu najit.
|
||
abc Profil |
#14 · Zasláno: 18. 2. 2013, 21:06:37
Takto?
if ($result > 0 && file_exists($slozka[0])) { include $slozka[0]; } else { include './html/404.php'; } |
||
crooner Profil * |
#15 · Zasláno: 18. 2. 2013, 21:16:37
to prerusim prvni podminku
|
||
abc Profil |
#16 · Zasláno: 18. 2. 2013, 21:23:51
„to prerusim prvni podminku“
Co to znamená česky? |
||
Alphard Profil |
#17 · Zasláno: 19. 2. 2013, 00:39:40
|
||
crooner Profil * |
#18 · Zasláno: 19. 2. 2013, 09:31:11
Ok děkuji Vám moc.
|
||
abc Profil |
#19 · Zasláno: 19. 2. 2013, 18:51:16
Alphard:
občas by to chtělo používat mozek :-) |
||
Časová prodleva: 11 let
|
0