Hallo zusammen.
Ich hab ein Problem, dass mich so langsam aber sicher in den Wahnsinn treibt
Zur Verwaltung von Bildinhalten auf einer Site hab ich ein kleines Script geschrieben, mit welchem sich Verzeichnisse erstellen, bearbeiten und löschen lassen. Sollten!
Kurz zum Aufbau.
ich erstelle z.B. einen neuen Ordner "trucks", dieser Ordner wird dann im Verzeichnis bilder/portfolio/ erstellt und es werden automatisch drei unterordner generiert. Sprich in diesem Fall hätten wir dann:
bilder/portfolio/trucks/thumbs
bilder/portfolio/trucks/images
bilder/portfolio/trucks/xxl
Das funktioniert auch einwandfrei. Der Ordner wird erstellt und ich kann Dateien in die einzelnen Unterordner laden. Über bearbeiten kann ich später auch einzelene Dateien hinzufügen, oder löschen. Alles wunderbar soweit.
Wenn ich jedoch einen Ordner löschen will bekomme ich ein Problem.
Und zwar lösche ich rekursiv das Verzeichniss (in unserem Beispiel "trucks") mit sämtlichen Unterordnern und Dateien. Sprich:
bilder/portfolio/trucks/thumbs/01.jpg usw.
bilder/portfolio/trucks/images/01.jpg usw.
bilder/portfolio/trucks/xxl/01.jpg usw.
Die Funktion mit der ich lösche sieht wie folgt aus:
Code:
<?php
$select = $HTTP_POST_VARS['select']; //select ist die Variable für den zu löschenden Punkt, welcher aus einem Auswahlmenu übergeben wird. In unserem Beispiel würde bei echo $select; also trucks ausgegeben.
function rmdirr($dirname)
{
if (!file_exists($dirname)) {
return false;
}
if (is_file($dirname)) {
echo "unlink: ".$dirname."
"; //siehe unten
return unlink($dirname);
}
$dir = dir($dirname);
while (false !== $entry = $dir->read()) {
if ($entry == '.' || $entry == '..') {
continue;
}
rmdirr("$dirname/$entry");
}
$dir->close();
echo "dir remove: ".$dirname."
"; //siehe unten
return rmdir($dirname);
}
rmdirr('portfolio/'.$select);
?>
Die funktion befindet sich in der Datei delete.php im Verzeichnis bilder.
Und müsste also beim Aufruf auf Bilder/portfolio/trucks zugreifen.
Tut sie ja auch. Laut meiner Ausgabe wird auch alles korrekt gelöscht, aber hier liegt der Hase im Pfeffer begraben. Nur im Internet Explorer funktioniert das ganze. Wenn ich z.b. folgende Ordner habe
bilder/portfolio/trucks
bilder/portfolio/cars
und geh jetzt über den i.e. in meine verwaltung und will den ordner trucks mit samt allen inhalten löschen, so klappt das genau so wie es soll. der Ordner trucks wird mit inhalten gelöscht und sonst nichts. Geh ich jetzt aber mit Firefox an die Sache, so wird mein kompletter Ordner portfolio mit allen unterordnern gelöscht. Was natürlich nicht sein darf. Auch hier soll nur der jeweilige Ordner z.b. trucks oder cars usw gelöscht werden und nicht mein ganzer Überordner so das sämtliche Inhalte verschwinden.
Wenn ich mir in der funktion oben über
Code:
echo "unlink: ".$dirname."
";
echo "dir remove: ".$dirname."
";
ausgeben lasse welche Dateien und Ordner gelöscht wurden, bekomme ich sowohl im i.e. als auch im firefox folgende Ausgabe:
dir remove: portfolio/e_Sonstiges/images
unlink: portfolio/e_Sonstiges/thumbs/4ACW9470.jpg
unlink: portfolio/e_Sonstiges/thumbs/4ACW9472.jpg
unlink: portfolio/e_Sonstiges/thumbs/4ACW9474.jpg
unlink: portfolio/e_Sonstiges/thumbs/4ACW9477.jpg
unlink: portfolio/e_Sonstiges/thumbs/4ACW9480.jpg
unlink: portfolio/e_Sonstiges/thumbs/4ACW9496.jpg
unlink: portfolio/e_Sonstiges/thumbs/4ACW9498.jpg
unlink: portfolio/e_Sonstiges/thumbs/4ACW9501.jpg
unlink: portfolio/e_Sonstiges/thumbs/4ACW9505.jpg
unlink: portfolio/e_Sonstiges/thumbs/4ACW9510.jpg
unlink: portfolio/e_Sonstiges/thumbs/4ACW9511.jpg
unlink: portfolio/e_Sonstiges/thumbs/Detail_Seite.jpg
unlink: portfolio/e_Sonstiges/thumbs/Detail_Sitz.jpg
unlink: portfolio/e_Sonstiges/thumbs/Roller_Gesamt.jpg
unlink: portfolio/e_Sonstiges/thumbs/schraeg_von_hinten.jpg
dir remove: portfolio/e_Sonstiges/thumbs
dir remove: portfolio/e_Sonstiges/xxl
dir remove: portfolio/e_Sonstiges
was so auch komplett Stimmen würde. Das komische ist nur das er im i.e. eben genau das löscht was in der Ausgabe erscheint, im Firefox aber dann quasi alles löscht. sprich meinen ganzen ordner portfolio mit allem was darin ist.
Ich hoffe jemand von euch hat ne Idee wie ich dem Problem Herr werden kann. Bin solangsam am kopf auf den tisch hauen angelangt.
Wie gesagt, im i.e. funktioniert alles wie es soll nur der FF löscht mir einfach viel zu viel.
bin für jeden Tip dankbar.
stormy