Sven K.: Funktion zum Löschen von Dateien funktioniert nicht

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

  1. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau