Sziasztok!
Nos pár napja elkezdtünk egy ismerősömmel, egy több felhasználós rendszert építeni... Cpanelen kiosztottam, mindenkinek van egy saját mappája, abban egy ami jelszavas és egy amit nem indexelünk.
A lényeg az lenne, hogy minden felhasználó mappáját almappák nélkül tudjuk listázni, indexelni. Mivel a felhasználók ide html, css stb fileokat is tölthetnek, csak bizonyos filetípusokat szerenénk listázni. Tehát egy oldalon szerenénk bizonyos filetípusból, de több mappából listázni, dátum szerint fileokat, almappák nélkül.
Nekem nagyon fel van adva ezzel a lecke. Egy hete nem haladok a dologgal semmit. Lehet rosszul pacsizok gogollal, de semmi értelmeset nem találtam. Pedig elvileg ez a script elférne pár sorban, nem találtam rá megoldást.
Tudom, hogy nem kérek egyszerűt, de remélem valakinek volt már hasonlója és/vagy tud segíteni. Nagyon hálás lennék, esetleg küldök egy sört, vagy akármit.
- 3854 megtekintés
Hozzászólások
Hát nem tudom, jól értettem-e a problémát, de itt egy php-kód, talán segít:
$k_azon = opendir("../video");
while (false !== ($fajl = readdir($k_azon))) {
if ($fajl != "." && $fajl != ".." && $fajl != "*.jpg") {
echo "$fajl";
}
}
closedir($k_azon);
- A hozzászóláshoz be kell jelentkezni
Ez körülbelül az amire szükségem lenne, csak az egyszerre több mappa kiolvasása kellene bele, meg hogy dátum szerint rendezze a sorrendet... jól értem hogyha hozzáadok több változót akkor a többmappás dolog is megvan vele?
- A hozzászóláshoz be kell jelentkezni
Így van. A függvényben pedig tovább szűkítheted a paramétereket akár úgy is, hogy egyezést raksz bele (pldául ha csak html fájlokat listázol, akkor
if ($fajl = "*.html")
- A hozzászóláshoz be kell jelentkezni
Huhh hát elég szépen haladok a dologgal és a php manualban is találtam egy hasonló kódot... csak az a baj hogy több mappa tartalmát ömlesztve szeretném megjeleníteni... itt a kód amit használtam, Dacr te is hasonlót írtál, annak segítségével találtam ezt is meg. :)
----
<?php
$mappa1 = "$DOCUMENT_ROOT"."/mappa1/";
$dir1 = opendir($mappa1);
$mappa2 = "$DOCUMENT_ROOT"."/mappa2/";
$dir2 = opendir($mappa2);
echo ("Freshest:");
while ($file = readdir($dir1) //azt hiszem valahol itt kéne a $dir2 -t alkalmazni, csak nem tudom hogyan...
{
$parts = explode(".", $file);
if (is_array($parts) && count($parts) > 1) {
$extension = end($parts);
if ($extension == "mp3" OR $extension == "MP3" OR $extension == "Mp3") // is extension ext or EXT ?
echo " $file
";
}
}
echo " />";
closedir($dir1);
closedir($dir2);
?>
----
Valahogy úgy szeretném, hogy a dir1 és a dir2 a fileok listázásánál egyben jelenjen meg.
Meg még valami, valahogy meg kéne oldanom, hogy dátum szerint rendezve legyen a dolog, csökkenő sorrendben, láttam ehhez is kódot, de nem nagyon tudom hova kéne beszúrni. :S
Tudnátok még ebben segíteni? aztán már tényleg békén hagyok mindenkit. :D Már látom, hogy nagy fába vágtam a fejszémet.
- A hozzászóláshoz be kell jelentkezni
Még nem csináltam ilyet, de próbáld ki (nem tudom működhet-e):
while ($file1 = readdir($dir1) && $file2 = readdir($dir2))
A rendezést hirtelen én sem tudom, hogy oldhatnád meg. Talán esetleg úgy, hogy egy html select-be teszed option-ként, s azt rendezed. Ha lehet.
Rendezést én sql adatok lehívásánál szoktam csinálni, ott meg ugye már eleve úgy lehet lekérni.
Hátha valaki tudja rá a megoldást.
- A hozzászóláshoz be kell jelentkezni
Egyszerre több mappa olvasásánál erre jutottam:
Így működött a while ciklusban:
while (($file1 = readdir($dir1))||($file2 = readdir($dir2)))
{
$parts = explode(".", $file1, $file2);
Csak itt meg a hibás explodeba való helyezés miatt az eredmény nem jelenik, meg. Biztos, hogy valahogy rosszul passzintottam össze...
Dátum szerinti rendezés:
Huh, hát ahogy eddig olvastam, úgy néz ki, hogy a sorrend úgy változik, ahogy a szerveren tárolva van, ami majdnem olyan, mintha a file feltöltési dátuma szerint rendezné. Ettől függetlenül, nemnagyon tudom, hogyan passzinthanám be az aláábit (elvileg rendezi dátum szerint a megjelenített eredményeket, csak nem tudom hoygan):
$files = preg_find('/./', $dir,
PREG_FIND_RECURSIVE|PREG_FIND_RETURNASSOC |PREG_FIND_SORTMODIFIED);
$files=array_keys($files);
Ha ezt használnám akkor valószínűleg újra kellene írnom az egészet, ugye?
kezdek nagyon belebonyolódni, megtenné egy olyan sima php script is, ami a letöltéseket így kezeli, vagy képes így kezelni ahogy leírtam... :S
- A hozzászóláshoz be kell jelentkezni
Tehát mondjuk a /ver/www-ben van pár könyvtár, amit amúgy valami konfigból is ki tudsz olvasni, és azon könyvtárak tartalma kéne ömlesztve?
Vagy ez az almappák nélkül ez hogy van?
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.
- A hozzászóláshoz be kell jelentkezni
Igen valahogy úgy ahogy mondod, szóval, van a /public_html azon belül a felhasználók mappái és azoknak a mappáknak a tartalma kellene ömlesztve.
/public_html/
----user1/
------dir1
------dir2
----user2/
------dir1
------dir2
tehát nekem csak a user1 és user2 mappák tartalma kellene, a dir1 és dir2-é már nem. tehát egyes mélységig szeretnék csak listázni, valahogy úgy, ahogy az indexben jelennek meg apache szerver esetén, csak mappaváltási lehetőségek nélkül, és csak bizonyos fileokat kilistázva, kiterjesztés szerint.
- A hozzászóláshoz be kell jelentkezni
man find
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
ez elég tömör :D nem nagyon értem :S ezt hogyan tudnám használni?
- A hozzászóláshoz be kell jelentkezni
pedig a man-ban tényleg le van írva ;)
find /public_html -maxdepth 1 ! -type d
szerk: itt a kimenetét kellene visszaolvasnod php-ba, de egyébként a fentebb adott php-s megoldás miért nem jó?
- A hozzászóláshoz be kell jelentkezni
huhh jó lesz az a phps megoldás... nem nagyon értek hozzá sajnos, remélem csak még. :) köszi a válaszokat, majd belinkelem mi lett belőle. :D
ezer hála mégegyszer, mostmár nyugodtan fogok aludni. :D
problem solved yeehaa :D
- A hozzászóláshoz be kell jelentkezni
! -type d ... atyaeg... -type f nem?
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
-type f nem feltétlenül hoz mindent
- A hozzászóláshoz be kell jelentkezni
Miert, mi kellene meg? Altalaban a symlinkek nem szoktak nagyon kimenni a zenekonyvtarbol, socketet es fifot meg nem sok lejacco ismer.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
hi, van erre egy beepitett fv (glob), illetve a hozzaszolasoknal rekurziv megoldast is talalsz.
- A hozzászóláshoz be kell jelentkezni
Eddig úgy néz ki, rosszul keresek, vagy nem nagyon vannak olyanok akik pont azt szeretnék megoldani amit én. Minden esetre a dátum szerinti rendezést a kommentekből megtudtam hogy kell, csak a többmappás témát nem. Szóval köszi a tippet :D már csak egy problem maradt. :)
Esetleg, ha a script egyes mappamélységig nézné át és úgy listázná az addig megtalált fileokat.
- A hozzászóláshoz be kell jelentkezni
find /mappa -type f -maxdepth 1
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni