Autor | Zpráva | ||
---|---|---|---|
bazz Profil |
#1 · Zasláno: 2. 12. 2015, 21:43:37
ahoj, jsem v pasti... už gůglím dva dny a nejsem schopný najít způsob jak smazat složku i když obsahuje soubory :-/ asi to bude snadné ale prostě se mi nedaří to najít.
takhle si vypíšu složky.. <?php $slozky = glob("uploads/*", GLOB_ONLYDIR); // Řazení od nejnovějšího usort($slozky, function($a, $b) { return filemtime($a) < filemtime($b); }); // Výpis $blank = "_blank"; foreach ($slozky as $slozka) { echo "<a href='$slozka/vypis_souboru.php'>". basename($slozka, '.*') . "</a><br>\n"; } ?> |
||
mimochodec Profil |
#2 · Zasláno: 2. 12. 2015, 21:50:10
Po dvoudenním hledání nic moc výsledek. Cos přesně hledal? Já jsem zkusil "php delete folder with files" a za tři minuty jsem našel třeba tohle: php.net/manual/en/function.rmdir.php#110489
|
||
bazz Profil |
#3 · Zasláno: 2. 12. 2015, 22:25:24
vyzkoušel jsem několikatery skripty z php.net/manual ale asi jsem degen prostě to nedokážu implementovat na můj skript...
mohl by mi prosím někdo poradit kde dělám chybu.. děkuji takhle jsem to zkoušel, ale marně, bohužel <?php $slozky = glob("uploads/*", GLOB_ONLYDIR); usort($slozky, function($a, $b) { return filemtime($a) < filemtime($b); }); function rrmdir($slozky) { $dir = opendir($slozky); while(false !== ( $file = readdir($dir)) ) { if (( $file != '.' ) && ( $file != '..' )) { $full = $src . '/' . $file; if ( is_dir($full) ) { rrmdir($full); } else { unlink($full); } } } closedir($dir); rmdir($slozky); } ?> |
||
Alphard Profil |
#4 · Zasláno: 2. 12. 2015, 23:31:53
V rychlosti, proměnná
$src neexistuje (mělo by tam být $slozky ) a ta funkce se nikde nevolá.
|
||
bazz Profil |
#5 · Zasláno: 3. 12. 2015, 18:53:27
s tímto skriptem jsem se nedomluvil. Takže jsem začal pracovat na tomto a mám tam problém s tím že se mi ty složky mažou při refreshi stránky což jak uznáte je dost nevhodné :-D
prosím nemůžu to rozlousknout mohl by na to někdo mrknout. Děkuji mnohokrát <?php $slozky = glob("uploads/*", GLOB_ONLYDIR); // Řazení od nejnovějšího usort($slozky, function($a, $b) { return filemtime($a) < filemtime($b); }); // Výpis foreach ($slozky as $slozka) { echo "<a href='$slozka/vypis_souboru.php'>". basename($slozka, '.*') . "</a><br>\n"; } if (@is_dir($slozka)) { $objects = scandir($slozka); foreach ($objects as $object) { if ($object != "." && $object != "..") { if (filetype($slozka."/".$object) == "dir") rrmdir($slozka."/".$object); else unlink($slozka."/".$object); } } reset($objects); rmdir($slozka); } $slozka = dir("./uploads/"); while($soubor=$slozka->read()) { if ($soubor=="." || $soubor=="..") continue; echo " <span><a href=\"?soubor=$soubor\" onclick=\"return confirm('opravdu smazat tento soubor?')\">$soubor</a></span><br>\n"; } $slozka->close(); ?> Taky mi to vypisuje ty soubory 2x ale když jedno z toho odstraním přestane to fachat uplně.. :-( chjo jsem z toho úplně blbej |
||
Alphard Profil |
#6 · Zasláno: 4. 12. 2015, 01:45:51
A jak jinak to má fungovat? Tady v [#5] je naprogramovaný výpis souborů (řádky 2-11), smazání souborů (řádky 14-23, ale využívají proměnné z té první části) a opět vypsání souborů (řádky 28-37).
„ale když jedno z toho odstraním přestane to fachat uplně“ Chtělo by to míň zkoušet kopírovat a víc přemýšlet. Rozumíte každému řádku a každé funkci, co dělá a proč tam je? Mně se ten kód zdá docela jednoduchý, kdyžtak se zeptejte. A k problému. Mazat budete chtít asi jen ten soubor, který je v $_GET['soubor'] (tam se dostane klikem na odkaz). Doplňte tam podmínku:
// upozorňujii, že tady není žádné zabezpečení if (!empty($_GET['soubor'])) { rrmdir($_GET['soubor']); } |
||
bazz Profil |
#7 · Zasláno: 5. 12. 2015, 23:11:22
neklaplo mi nic :-(
když dám mazat složku kde jsou soubory nesmaže se mi. vyřešil jsem to tak že tu složku nechám uživatele otevřít. tam on pomaže soubory a pak samotnou složku.. Bohužel skript který by to udělal automaticky mi vždy vypsal chybu že nemám práva |
||
Keeehi Profil |
#8 · Zasláno: 5. 12. 2015, 23:33:42
Pro budoucího čtenáře - to že to bazz nezvládne vyřešit neznamená, že to řešitelné není. Ve skutečnosti si stačí okopírovat skoro jakýkoli nalezený kód a jen ho správně pak použít.
function delTree($dir) { $files = array_diff(scandir($dir), array('.','..')); foreach ($files as $file) { is_dir("$dir/$file") ? delTree("$dir/$file") : unlink("$dir/$file"); } return rmdir($dir); } // upozorňuji, že tady není žádné zabezpečení if (!empty($_GET['slozka'])) { delTree($_GET['slozka']); } |
||
leorond Profil |
#9 · Zasláno: 6. 12. 2015, 10:54:20
Myslím že by to bazz dokázal kdyby skript pochopil, možná by bylo dobré mu ho trošku popsat :).
|
||
Časová prodleva: 8 let
|
0