Rekurzív php script könyvtár törléséhez
Ez a kis kód törli a megadott könyvtárat és annak tartalmát, ha egy könyvtár nem üres, meghívja saját magát míg végül törli az összes könyvtárat.
Jól jön olyan esetekben, ha egy script létrehoz könyvtárakat amiket nincs jogunk törölni ftp-n keresztül, vagy túl sok fájl van, aminek nincs kedvünk végigvárni a törlését.
A kód:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php function deldir($dirname) { if (is_dir($dirname)) // a megadott elérési út könyvtár-e $dir_handle = opendir($dirname); if (!$dir_handle) return false; while($file = readdir($dir_handle)) { if ($file != "." && $file != "..") { if (!is_dir($dirname."/".$file)) // ha nem könyvtár akkor törli unlink($dirname."/".$file); else deldir($dirname.'/'.$file); // ha könyvtár, meghívja saját magát és így tovább... } } closedir($dir_handle); rmdir($dirname); return true; } // a törlendő könyvtár neve/elérési útja deldir('eztTorold'); ?> |
Forrás: http://www.ozzu.com/programming-forum/php-delete-directory-folder-t47492.html
Szerző: crash
Kapcsolódó bejegyzések:
A lentebbi kód egy célt szolgál: wordpress honlap tartalmát tudod törölni úgy, hogy megnyitsz egy bizonyos URL-t. Akkor is, ha a WordPress honaphoz egyébként nin …
Gyakorta kell egy-egy szkriptnek base path-et, base dir-t satöbbit megadni abszolút elérési úttal. Egy egyszerű kis scripttel ezt pillanatok alatt meghatározhatj …
Az előbb szívtam azzal, hogy egy fájlt – illetve azokat a könyvtárakat amikben ez a fájl volt – nem tudtam törölni, mert a windows arra hivatkozott hogy túl hoss …
Gyakran látni a weboldalakon “vissza” linkeket. Általában ezek arra a helyre mutatnak, ahonnan valószínűleg jöhetett a felhasználó, rosszabb esetben JavaScript-e …
Kijött a legfrissebb WordPress, érdemes minél gyorsabban megejteni a frissítést. Az alábbi fájlok változtak a 2.3.2-es verzióhoz képest. xmlrpc.php …
A cikket beküldte: Harder (http://blog.harder.hu)

Tweet This
Share on Facebook
Digg This
Save to delicious
Stumble it
RSS Feed
Nagyon okos dolog…. én is hasonló képen védem le az oldalaimat…. el van rejtve a forráskódba egy hasonló “script” amit kintről meg lehet hívni és törli a mappa tartalmát…. minden egyes php-t és mappát ami a scriptet tartalmazó file-al azonos mappában van……..
Ha jól látom, az else ág a belső if-hez tartozik, ezért szebb és egyértelműbb lenne a kód, ha a belső if alatt helyezkedne el.
Kezdő programozóként, lenne egy kérdésem még.
Hogy tér vissza a vezérlés egy alkönyvtár törlése után újra, hogy a könyvtár tartalmát tovább vizsgálja további file/ könyvtár törlések miatt?
Köszönöm szépen! Timi
Egy másik megoldás(dir-engedély, file-time figyelés)
*********************************************
//könyvtár tartalom törlése: ha $ido-nél(3600=1óra) van régebbi fájl / ha $oc=1 a könyvtárat is!!
function rmdirr($dirname, $oc=0, $ido)
{ // Ha nem létezik -> false
if (!file_exists($dirname))
{ return false; }
// Ha fájl és időn túli -> törlés
if ( (is_file($dirname)) && ((time()-filemtime($dirname)) > $ido) )
{ return unlink($dirname); }
// Ha könyvtár
if(is_dir($dirname))
{ $dir = dir($dirname);
while (false !== $entry = $dir->read())
{ // Ha a benne levő nem fájl -> rekurzív hívás kimarad és ciklus tovább
if ($entry == ‘.’ || $entry == ‘..’)
{ continue; }
// Rekurzív meghívás a talált fájlra
rmdirr(“$dirname/$entry”,$oc,$ido);
}
$dir->close();
}
// Könyvtárt is töröl
if ($oc === 1)
{ return rmdir($dirname); }
}
//Az 5 percnél régebbi fájlok törlése
rmdirr(‘photos/original’, 0, 300);
*************************************