PHP - Datei löschen

Alice

Erfahrenes Mitglied
Hallo. :)

Ich würde gerne mit einem Link eine Grafik löschen, aber irgendwie funktioniert es nicht.

avatare.php
PHP:
echo "<td align=left><a style=\"color:blue;\" href=\"./delete.php?img=../Avatare/Avatar-".$row['field2'].".png\">Löschen</a></td>";

Delete.php
PHP:
<?php
if( isset($_GET["img"]) ){
if(file_exists($_GET["img"])) {
unlink($_GET["img"]);
}
}
header("Location: http://www.meine-seite.de/admin/avatare.php");
exit;
?>

Ist ein Fehler im Skript?
 
Kann jetzt keinen Fehler finden. Was wird angezeigt wenn du in der "delete.php" den Wert der GET-Variablen mit echo aus gibst?
Kommt der Wert denn überhaupt richtig an und wird der IF-Block ausgeführt (wenn Ja wie weit)?

Gruß Thomas
 
@Gainwar: Im Grunde auch keine schlechte Idee das zu prüfen.
Aber wenn es an den Rechten liegen würde, dann wird doch eine Fehlermeldung ausgegeben oder!?
 
Das kommt ganz darauf an wie das Error-Reporting eingestellt ist.
Generell würde ich aber empfehlen auch immer die "else" Zweige zu implementieren um sofort zu wissen was genau denn schief gegangen ist. Dadurch kann man sich eine lästige nachträgliche Fehlersuche ersparen.
 
Hallo. :)

Vielen Dank für die Antworten.

Wenn ich auf "Löschen" klicke passiert gar nichts. Der wechselt zwar extrem schnell zur delete.php und direkt wieder zurück aber die Datei wird nicht gelöscht. Die Rechte sind richtig eingestellt (777).

Der PHP-Code von der delete.php ist richtig. Bei dem PHP/HTML-Code bin ich mir nicht sicher.
 
Hast du mal getestet was raus kommt wenn du den Inhalt von $_GET["img"] ausgibst?

Ich vermute mal das der Dateiname falsch oder gar nicht in der "delete.php" ankommt.
 
Also ich habe es gerade noch einmal getestet und jetzt geht es. Aber die Grafik wird nachdem löschen unter avatare.php immer noch angezeigt. Ich muss die Seite manuell aktuallisieren und dann ist die Grafik weg.

Warum ist das denn so?

Bei einer anderen Admin-Galarie mit fast den selben Code, wird die Grafik sofort gelöscht.
 
Wird das Bild überhaupt gefunden? Vll ist ja etwas am Pfad falsch?
PHP:
../Avatare/Avatar-".$row['field2'].".png
Schonmal $_GET["img"] ausgeben lassen, bzw. nach
file_exists($_GET["img"]) eine Meldung ausgeben lassen ob diese überhaupt gefunden wurde?

Zudem solltest du vll auch überprüfen ob die Datei auch wirklich ein Bild ist - und den Ordner fixen.
Sonst könntest du auch ausversehn mal ne php datei löschen oder sonst was.
 
Das liegt dann an deinem Browser Cache, bzw. an dem was der Server an Caching Informationen mitsendet. Diese kannst du aber in deiner PHP Datei deaktivieren.

Das müsste dann ungefähr so aussehen:

PHP:
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>

Infos dazu findest du auch hier:
void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
 
Zurück