Funktion zum Löschen von Dateien funktioniert nicht
Sven K.
- php
1 Tom
Hallo,
ich lasse mir alle Ordner und Dateien in einem Verzeichnis auflisten und bei jeder Datei noch eine Checkbox hinzumachen. Nun habe ich das Problem, dass wenn ich die Funktion zum löschen aufrufe keine Datei gelöscht wird, auch wenn Checkboxes ausgewählt sind. Hier einmal beide Funktionen:
function drawFiles($dir)
{
$dirhandle = opendir(proofslashandedit($dir));
echo "<form name='delete' action='" . $_SERVER['PHP_SELF'] . "' method='post'>";
$i = 0;
while(false != ($dname = readdir($dirhandle)))
{
$i++;
if(is_file(proofslashandedit($dir) . $dname))
{
echo "<input type='checkbox' name='f" . $i . "'>";
echo "<img src='Grafiken/text.gif'> ";
echo "<a href='" . proofslashandedit($dir) . $dname . "'>$dname</a><br>";
}
}
echo "</form>";
closedir($dirhandle);
}
function deleteFiles($dir)
{
$dirhandle = opendir(proofslashandedit($dir));
$i = 0;
while(false != ($dname = readdir($dirhandle)))
{
$i++;
if(isset($_POST["f" . $i]))
{
unlink(proofslashandedit($dir) . $dname);
}
}
closedir($dirhandle);
}
Normalerweise sollte er, wenn die Checkbox ausgewählt ist die Methode unlink aufrufen, macht er aber nicht. Ich bin dankbar für jede Antwort. Danke!
mfG
Sven
Hello,
function deleteFiles($dir)
{
$dirhandle = opendir(proofslashandedit($dir));
$i = 0;
while(false != ($dname = readdir($dirhandle)))
{
$i++;
if(isset($_POST["f" . $i]))
{
unlink(proofslashandedit($dir) . $dname);
}
}
closedir($dirhandle);
}Normalerweise sollte er, wenn die Checkbox ausgewählt ist die Methode unlink aufrufen, macht er aber nicht. Ich bin dankbar für jede Antwort. Danke!
1. Wer ist "er"?
2. Du spielst russisches Roulette mit Deinen Files
3. Die Reihenfolge der Auflistung ist in keiner Weise abgesichert.
Es könnten sich weitere Files dazugesellt haben seit der Abfrage
Es könnten bereits Files gelöscht worden sein seit der Abfrage
Es könnten Größenänderungen stattgefunden haben, die das Filesystem
dazu veranlasst haben, das File zu verschieben...
4. Solche Funktionen sollte man nur mit Session und Authentifizierung aufbauen
5. Ein Formularzertifikat wäre nicht schlecht, denn überleg mal, was sonst bei
einem Multipost passieren würde? Bsp.: Du löschst nur jedes zweite File, dann
rufst Du das Formular aus Versehen nochmal auf...
Also bei der Abfrage die Files unter einem Formularzertifikat in die Session eintragen
und nur ein Handle an den Client liefern. Nach dem Post wird das Array unter dem Formular-
zertifikat in der Session gesucht und das Handle für die Ermittlung des Filenames benutzt.
Danach wird das Zertifikat gelöscht. Wenn das Zertifikat zu alt ist, darf es außerdem
auch nicht mehr funktionieren und wird gelöscht...
Harzliche Grüße aus http://www.annerschbarrich.de
Tom