Mit PHP-Datei sämtliche Dateien und Ordner löschen

hallo :slight_smile:

hab mal ein recht ungewöhnliches anliegen… und zwar möchte ich sämtliche Dateien und Ordner auf einen Webspace mittels php-datei löschen.

schon klar, der befehl unlink muss her.

aber wie schafft man es, dass die php-datei sämtliche ordner durchsucht, alle dateien löscht und anschließend den ordner löscht?

und weil das vlt doch noch zu leicht für einige hier ist…kommt noch was dazu ^^ -> die php-datei befindet sich in einem unterordner.

somit brauch ich einige schleifen die wiederrum in schleifen arbeiten… leider hab ichs nicht so mit dem while :frowning:

aus einem festgelegten verzeichnis alle dateien löschen hab ich schon ->

[code]<?php
$ordnername = “…/werbung/BANNER_andere”;

if (is_dir($ordnername)) {
if ($dh = opendir($ordnername)) {
while (($file = readdir($dh)) !== false) {
if ($file!="." AND $file !="…") {
unlink("$ordnername/$file");
}
}
closedir($dh);
}
}
?>[/code]

bitte um hilfe

filmanleitungen.net :wink: Da gibts das funktionierende Script dafür… Vergleich es mal mit deinem :wink:

habs mir gerade angeschaut. sieht toll aus! und nach ein paar kleinen änderungen kann ich es auch verwenden ^^

DANKE!!

…möchte nämlich einige festgelegte Ordner nicht löschen… damit nicht alles weg ist ^^

EDIT: hm… bekomm eine fehlermeldung…

Warning: rmdir() [function.rmdir]: SecureSSI Sicherheitsverletzung: Das Script (/usr/export/www/hosting/engelsreich/Webspell/downloads/unlinkall.php) hat versucht, ausserhalb von deinem Webspaceverzeichniss, auf die Datei (..) zuzugreifen. Aus Sicherheitsgruenden ist dies nicht erlaubt! in /usr/export/www/hosting/engelsreich/Webspell/downloads/unlinkall.php on line 19 Dateien und Verzeichnisse erfolgreich gelöscht

BTW: Du kannst den Serverstatus entfernen, der wird net mehr geflegt :wink:

ja, ich weiss ^^

schaust dir bitte meinen edit (Fehlermeldung) an? :slight_smile:

bezüglich Fehlermeldung:
oder ist das nur, weil die php-datei sich selbst gelöscht hat??

Hast du den Pfad absolut angegeben?

Da stehts doch:

Du versuchts Verzeichnisse auf dem Server, die ausserhalb deines Webspace liegen zu löschen.
Wenn du im root-Verzeichniss bist, musst du verhindern, das er versucht “…” zu löschen :wink:

function delete($folder="…")

der notwendige / steht dann direkt beim code dabei ->
unlink($folder."/".$file);

das verzeichnis ist so aufgebaut
root/Webspell/downloads/datei.php

mit dem code wird das “Webspell”-Verzeichnis komplett gelöscht…jedoch das root-verzeichnis bleibt bestehen. im root-verzeichnis befinden sich noch andere ordner & dateien, welche ebenfalls gelöscht werden sollen.

Bei der Rekursion gibt readdir die beiden Verzeichnisse ‘.’ und ‘…’ zurück. Das Löschen der beiden Verzeichnisse musst du verhindern :wink:

ok, danke!

aber wie schaff ich das hier ->

das verzeichnis ist so aufgebaut
root/Webspell/downloads/datei.php

mit dem code wird das “Webspell”-Verzeichnis komplett gelöscht…jedoch das root-verzeichnis bleibt bestehen. im root-verzeichnis befinden sich noch andere ordner & dateien, welche ebenfalls gelöscht werden sollen.

was für einen Code hast du denn bisher?
Ohne den kann man schlecht sagen, was dein Fehler ist…

ansonsten hier noch eines von mir, welches funktionieren sollte.
Löscht das Verzeichnis und alle Unterverzeichnisse und Dateien.
Einmal mit und einmal ohne Rekursion.

function deldir_r($dir) { if(substr($dir,-1) != '/') $dir .= '/'; $dh = opendir($dir); while($file = readdir($dh)) { if($file != '.' && $file != '..') { if(is_dir($dir.$file)) { deldir($dir.$file); } else { chmod($dir.$file, 0777); unlink($dir.$file); } } } closedir($dh); chmod($dir, 0777); rmdir($dir); }

[code]function deldir_i($dir)
{
if(substr($dir,-1) != ‘/’) $dir .= ‘/’;
$stack = array($dir);
$deldir = array();

while(count($stack) > 0)
{
	$dir = array_pop($stack);
	$dh = opendir($dir);
	while($file = readdir($dh))
	{
		if($file != '.' && $file != '..')
		{
			if(is_dir($dir.$file))
			{
				array_push($stack,$dir.$file.'/');
			}
			else
			{
				chmod($dir.$file,0777);
				unlink($dir.$file);
			}
		}
	}
	closedir($dh);
	array_push($deldir, $dir);
}
while(count($deldir)>0)
	rmdir(array_pop($deldir));

}[/code]

mfg Balmung

danke! werd ich gleich mal testen.

hab den code von filmanleitung.net

[code]<?php

function delete($folder="…")
{
if(!$dir=opendir($folder))
return false;

    while($file=readdir($dir))
    {
            if (is_dir($folder."/".$file) && $file != "." && $file != "..")
		delete($folder."/".$file);
	elseif(is_file($folder."/".$file))
		{
			chmod($folder."/".$file, 0755);
			unlink($folder."/".$file);
		}
	}
    closedir($dir);
return rmdir($folder);

}

if(isset($_GET[‘ok’]) && $_GET[‘ok’] == “1”){
delete();
echo ‘Dateien und Verzeichnisse erfolgreich gelöscht’;
}
else {
?>

Bestätigung!

Klicken sie hier um das aktuelle Verzeichnis zu löschen

<?php } ?>[/code]

Hallo,

kann mir jemand den Code von filmanleitungen.net nochmals hier bereitstellen? Die Seite ist leider nicht mehr erreichbar. Lieben Dank.

Viele Grüße

https://web.archive.org/web/20161010191747/http://filmanleitungen.net:80/generatoren-topmenu-59/datei-len-topmenu-61