Bilder aus Verzeichnis löschen

sugar

Erfahrenes Mitglied
Ich habe ein eigenartiges Problem. Ich verwende folgendes Script um aus einem Verzeichnis Bilder zu löschen:
PHP:
<p>
<strong>Bilder löschen</strong><br />
<br />
<?php 
if ($do=="del") {

$datei = $_POST[file];

unlink("../bilder/".$datei);

echo "".$datei." gelöscht!";

}else{

 ?>
 </p>
<div align="center">
<form method="post" action="del.php?do=del"> 
 <p>
<?php echo "<select name='file'>"; 
 $dir = opendir("../bilder"); 
 while($datei = readdir($dir)) 
 { 
 if($datei != "." && $datei != "..") 
 { 
 echo "<option value=".$datei.">$datei</option>"; 
} 
 } 
 closedir($dir); 
 echo "</select>"; 
 ?>
 </p>
 <input type="submit" value="Delete"> 
</form></div>
<?php
}
?>

Ich habe schon verschiedene Varianten dieses Scripts verwendet und bei mir hat alles funktioniert nur beim Kunden will es einfach nicht klappen!! Hat jemand eine Erklärung? Er benutzt den gleichen Browser wie ich aber daran kann es ja eigentlich auch wirklich nicht liegen oder?

Oder hat jemand einen Plan B um Bilder zu löschen? :rolleyes:
 
was heisst es funktioniert beim Kunden nicht? Benutzt der Kunde das Script auf deinem Test-Server und es funktioniert nicht, oder hat der Kunde einen anderen Server und es funktioniert nicht?

Bei letzterem könnte es gut an anderen php.ini settings liegen...
 
Hm nein der Kunde benutzt ganz genau das gleiche Script, habe es ja auf seinen Webserver geladen. Ich selbst habe es an dutzenden verschiedenen Browsern und Computern getestet und es funktioniert einwandrei. Witzig ist auch, der Upload von Bilder funktioniert bei ihm, das auslesen des Verzeichnisses auch nur das löschen nicht!
 
Hallo!

Ist beim Kunden register_globals=off eingestellt?
Dann kann es nicht funktionieren..... versuche es mal so:
PHP:
<?php 
if(isset($_GET['do']) AND $_GET['do']=="del") {
    $datei = $_POST['file'];

    unlink("../bilder/".$datei);

    echo "".$datei." gelöscht!";
} else {
?>
Ausserdem würde ich noch error_reporting(E_ALL) an den Anfang des Scripts setzen.

Gruss Dr Dau
 
Da es bei mir funktioniert und es das gleiche Script ist, kann es doch eigentlich nicht an "register globals" liegen oder? Dann müsste es doch generell nicht gehen.

Danke für den Tipp mit "error_reporting(E_ALL) ", so habe ich rausgefunden dass ich einen Fehler in der POST Variable hatte: $datei = $_POST['file']; ist richtig, ich hatte $datei = $_POST[file]; (file ohne Anführungszeichen). Ob es daran gelegen hat weiß ich nicht, komischerweise hat er bei mir trotzdem gelöscht.

An dem "GET" kann es auch nicht liegen weil der Kunde die Nachricht erhält das Bild wurde gelöscht, also muss der Befehl ja ausgeführt worden sein oder? Nur das eben bei ihm das Bild nicht gelöscht ist (im Ordner). Er sieht es immer noch im Verzeichnis liegen.

Trotzdem schon mal danke für den schnellen Antworten! :)
 
PHP:
var_dump(unlink("../bilder/".$datei));

Müsste dann ein False zurückliefern... Dann kann es an den angesprochenen Dateisystemrechten liegen... Darf der Benutzer unter dem PHP ausgeführt wird die Dateien löschen?

Stimmt der Pfad zu den Bildern hin wirklich... vielleicht lieber einen absoluten verwenden um sicher zu gehen... ?

Auch wenn beides eignetlich Errors werfen müsste...
 
So jetzt kann jeder einmal lachen: Probleme waren die ganzen Leerzeichen die der Kunde in dem Dateinamen untergebracht hat! :suspekt: (Das die das aber auch nie lernen! :mad:)
 
Zurück