Per Ajax Datei auf dem Server löschen

Xym

Erfahrenes Mitglied
Hi!

Wie in der Überschrift steht möchte ich per Ajax eine Datei vom Server löschen.

Ersteinmal habe mit dem Code eine Verbindung zur PHP-Datei gemacht und die Datei übergeben welche gelöscht werden soll.
Javascript:
var xhr;
    
    if(window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }

function verbinden (file) {
                xhr.open("POST", "loeschen.php", true);
                xhr.send("file=" + file);
            }

Die Funktion verbinden wird auch richtig aufgerufen und die Variable file auch richtig übergeben.

Das hier ist meine PHP-Datei:
PHP:
if (isset($_POST['file'])) {
        $file = $_POST['file'] + ".jpg";
        unlink('../images/'.$file.');
 }

Aber die Bilder werden nicht gelöscht.
 
Zuletzt bearbeitet von einem Moderator:
PHP:
if(isset($_POST['file']))
{
  $file = $_POST['file'] . '.jpg';
  unlink('../images/' . $file);
}
Nachtrag: du solltest den Wert aus POST noch validieren, da man momentan annähernd jede Datei auf deinem Server löschen kann.
 
Du solltest mal nachsehen, ob das Problem seitens Javascript oder seitens PHP besteht, aber dazu kann ich keine Aussagen treffen, da ich weder deine Verzeichnisstruktur noch deinen Quelltext kenne.
 
Also,

hier habe ich erstmal die Bilder ausgegeben die im Ordner liegen:
PHP:
$dir = "../images/";
			
			if (is_dir($dir)) {
			    if ($dh = opendir($dir)) {
                                
                                echo '<table border="1">';
                                
				while (($file = readdir($dh)) !== false) {
                                    $file_sub = substr($file, 0, -4);
				    echo '<tr> <td> '.$file.' </td> <td> <span onclick="verbinden('.$file_sub.')"> L&ouml;schen </span> </td> </tr>';
				}
                                
                                echo '</table>';
				closedir($dh);
                            }
			}

Dann auf dem Klick das Javascript aufgerufen
Javascript:
var xhr = xmlhttp();
            
            function verbinden (file) {
                xhr.open("POST", "loeschen.php", true);
                xhr.send("file=" + file);
            }

Und das ist doe loeschen.php
PHP:
if(isset($_POST['file']))
{
  $file = $_POST['file'] . '.jpg';
  unlink('../images/' . $file);
}

Und das ist die Ordnerstrucktur:
Code:
root
 |- admin
       |- index.php (Datei wo das JS steht)
       |- loeschen.php
 |- images
      |- Bilder die gelöscht werden sollen

Hoffe das reicht aus ;)
 
Zuletzt bearbeitet von einem Moderator:
Was mir gerade auffällt: ist die Funktion xmlhttp() eine von dir selbst definierte Funktion? Ansonsten müsste die erste Zeile so aussehen:
Code:
var xhr = new XMLHttpRequest();
 
Oh, ja das hatte ich vergessen.
Das hier ist die Funktion xmlhttp()
Javascript:
function xmlhttp() {
    var xhr;
    
    if(window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    return xhr;
}
 
Zuletzt bearbeitet von einem Moderator:
Zurück