Datei einzeln löschen (PHP)?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Du läßt Links oder Buttons zum löschen anzeigen. Die versiehst Du mit Parametern im URL. So etwa:

?datei=$datei&mach=loeschmich

Im Zielskript fragst Du ab ob

$_GET['mach']=='loeschmich' 

und löschen kannst Du das dann mit

unlink($datei) 

Ich wäre da aber sehr, sehr vorsichtig, das wirft alle möglichen Sicherheitsprobleme auf, wenn Du eine Löschmöglichkeit - so wie das aussieht - innerhalb des Webspaces anbietest. Pass auf, dass da niemand Schweinereien mit dem Dateipfad anrichten kann, wie z.B. directory traversal mit '..', sonst löscht Dir jemand durch manipulierte Parameter an Stellen herum, wo er nicht soll.

Solche Fragen solltest Du übrigens besser in spezialisierten PHP- oder wenigstens Entwicklerforen stellen, dort hast Du viel bessere Chancen kompetente Antworten zu bekommen. Ich schlage mal z. B.  Stackoverflow vor.


ZekaZ 
Beitragsersteller
 08.10.2016, 12:52
0
pythonpups  08.10.2016, 13:07
@ZekaZ

Fast. Du müsstest $datei vorher noch aus $_GET['datei'] herauslesen. Und ich würde das löschen vor der Liste erledigen, dann ist sie gleich aktuell.

0

Der Code ist hier grad kaum lesbar (besser auf pastebin.com oder so posten, bei GF sieht das nicht so schön aus, Dinge werden teils "verschluckt" etc), aber grundsätzlich ist das ganz einfach, du übergibst den Dateinamen via GET an ein Löschscript und dort kannst du die Dateien dann mit dem Befehl "unlink()" löschen.

Ungefähr so:

<?php
$datei = $_GET['datei'];
unlink($datei);

Das "Löschscript" muss dafür natürlich die entsprechenden Rechte haben und die zu löschenden Dateien müssen sich im selben Verzeichnis befinden. Du solltest außerdem auch überprüfen, ob die Datei, die gelöscht werden soll, wirklich auch gelöscht werden darf, nicht dass da jemand Unsinn mit anstellt (z.B. einen absoluten Pfad angibt um Dateien in anderen Verzeichnissen zu löschen oder ähnliches).

BTW: Das mit dem auslesen des Verzeichnisses geht imho mit "scandir()" viel einfacher: http://php.net/scandir