dedlfix: POST submit

Beitrag lesen

Hi!

Dankeschön es hat geholfen!

Warum hast du denn das enctype-Attribut immer noch drin? Du benötigst es nur, wenn du einen Datei-Upload haben möchtest (<input type=file>), ansonsten gar nicht.

Mit dem Löschen-Button möchte ich Dateien vom Server löschen was ja funktioniert. Leider werden alle Dateien in dem Verzeichnis gelöscht.

Debugging! Dann sähest du vielleicht, dass der Anweisungsblock von if (isset($_POST['submit'])) in jedem Schleifendurchlauf abgearbeitet wird, weil du nicht zwischen den Submit-Buttons unterscheidest, wozu sie unterschiedliche Werte oder Namen haben müssten. Aber du hast da ein Hidden-Element, in dem bereits der Name der zu löschenden Datei steht, das du aber nicht auswertest.

Es sollen alle Dateien aufgelistet werden und hinter jeder aufgelisteten Zeile befindet sich ein "Löschen" Button. Mit diesem möchte ich die jeweilige Datei löschen.

Mach dir nochmal das Request-Response-Spiel zwischen Browser und Server klar, denn das was du da vermutlich vor deinem geistigen Auge hast wird in mehreren Zyklen abgearbeitet und die kann man ruhig im Ablauf getrennt behandeln. Strukturiere dein Script möglichst nach dem EVA-Prinzip:

1. Eingabedaten auswerten
2. Verarbeitung
3. Ausgabe

Das kann man nicht immer klar und deutlich voneinander trennen, oder es ist bei kleinen Scripten nicht effizient, aber anstrebenswert ist das Prinzip immer (wenn man nicht mit anderen Kalibern à la MVC-Frameworks arbeitet). Ich würde es so strukturieren: Wenn POST, dann Hidden-Eintrag löschen. Verzeichnis lesen (mit glob()). Ausgabe erstellen.

<script language="php">

$verzeichnisname = "./doku/pdf/";

$verzeichnis = opendir($verzeichnisname);
while($eintrag = readdir ($verzeichnis))
{
  $test = $verzeichnisname . "/" . $eintrag;
  if(is_dir($test) or (($eintrag==".htaccess") or ($eintrag=="verboten.html")))
    {
     /* echo "<!-- $eintrag -->\n"; /
    }
  else
     {
     echo "<tr>\n<td align="left"><a href="doku/pdf/$eintrag">$eintrag</a></td>\n";
     echo "<td align="right">" . filesize($test) . " Byte</td>\n";
     echo "<td align="center">";
    echo "</td>\n";
     echo "<td align="left">" . strftime("%d. %b. %Y, %H:%M", filemtime($test)) . "</td>\n";
     echo "<td align="center">";
     /
if (isset($_GET['admin'])) echo" <input type="submit" value="L&ouml;schen" />"; */

echo "<form method="POST" target="_self" enctype="multipart/form-data" action="">
   <input type="hidden" name="del" value="$eintrag" />
   <input type="submit" name="submit" value="L&ouml;schen" />
   </form>
  ";

if (isset($_POST['submit'])) {
$datei = $file;

  if(!empty($datei)) {  
  	if(file_exists('doku/pdf/' . $datei))  
  	{  
  	@unlink('doku/pdf/' . $datei);  
  	echo "Datei erfolgreich gelöscht!<br />\n";  
  	}  
  	else  
  	{  
  	echo "Datei existiert nicht mehr!<br />\n";  
  	}  

}
}
     }
}
closedir($verzeichnis);
</script>


>   
>   
  
  
Lo!