Löschen einer Datei auf dem Webspace?

Radhad

Erfahrenes Mitglied
Hallo zusammen,

für mein kleines Projekt brauche ich noch ein Script, das eine Datei löscht auf dem Webspace. Man soll nur ein Textfeld den Dateinamen eintragen und dann abschicken. *.php Files natürlich schützen.

Meine Frage ist, wie lauten die Befehle zum löschen einer Datei? Hat vielleicht jemand ein Beispielscript mit Kommentaren?


MfG Radhad
 
Ich glaube das Beispeilscript werde ichdann nicht mehr brauchen! Danke für den Link. Werde direkt mal was schreiben, wenn es nicht läuft melde ich mich wieder :-)


MfG Radhad
 
Nochmal ne kurze Frage, wie kann ich den Dateinameen überprüfen, ob die Endung .php ist? Also Sagen wir mal ich will vom String die letzten 3 Zeichen haben. Dann müsste das doch wie folgt aussehen:

PHP:
$laenge=strlen($_POST["dateiname"];
substr($_POST["dateiname"],$laenge-3,$laenge);

Ich mache bei sowas oft Fehler, daher Frage ich vorher bevor ich gleich wieder ne Ewigkeit suche :rolleyes:


MfG Radhad
 
PHP:
if (strtolower(substr($_POST["dateiname"],-3)) == 'php') {
  // ...
}
Bitte achte darauf, dass man auch script.php?dateiname=../index.html eingeben könnte. Und was dann passiert, muss ich Dir ja nicht sagen.

snuu
 
Das habe ich grade geschrieben:

PHP:
<?php
if(isset($_POST["userfile"])) {
  $laenge=strlen($_POST["dateiname"]); 
  if(substr($_POST["dateiname"],$laenge-3,$laenge)=='php' || substr($_POST["dateiname"],$laenge-3,$laenge)=='csv')
    echo "Sie versuchen eine geschützte Datei zu löschen!";
  else {
    if(unlink($_POST["userfile"]) {
      echo "Datei ".$_POST["userfile"]." gelöscht!";
    }
    else {
      echo "Datei ".$_POST["userfile"]." konnte nicht gelöscht werden!";
    }
  }
}
else {
?>
  <form method="post" action="delete.php">
    Datei eintragen<input type="textfield" name="userfile">
  <input type="submit" name="upload" value="Datei löschen">
  </form>
<?php
}
?>

Ich bekomme immer folgenden Fehler:
PHP:
Parse error: parse error in /raid/domains/de/r/radhad/htdocs/www/mail/delete.php on line 7

in zeile 7 steht:
if(unlink($_POST["userfile"]) {

Habe keine Ahnugn was den Fehler verursacht. Brauch die Datei bestimmte Rechte per CHMOD?

[EDIT]
Ich baue erstmal auf snuu's Vorschlag um.

@snuu: Kann man das auch unterbinden? Wenn ja: wie?
 
Zuletzt bearbeitet:
Hmm... dann wäre aber auch nicht unbedingt die Gefahr gebannt wenn man *.php?action=index.html angeben würde... Naja, ich denke die Überprüfung mit php und csv sollte reichen.

Parse error Zeile 7 besteht weiterhin.
 
@snuu: Kann man das auch unterbinden? Wenn ja: wie?
Zum Beispiel, indem Du aus dem übergebenen Dateinamen die "..", "/" und "\" entfernst. Somit ist erst einmal sicher gestellt, dass man nicht aus dem Verzeichnis "ausbrechen" kann, in dem das Script liegt.

Und eine Fehlermeldung beim Nichtvorhandensein einer Datei musst Du sowieso ausgeben.

@denyo-style: Es geht darum, eine Datei auf dem Server zu löschen und nicht darum eine hochzuladen!


snuu
 
Original geschrieben von denyo-style
Du musst hier mit der Autoglobalen $_FILES arbeiten. Lies Dir folgendes durch:

http://de2.php.net/manual/de/features.file-upload.php
Öhm, es geht hier aber soweit ich verstanden habe nicht um Dateiupload mittels PHP.

@Redhad: Klammersetzung!

PHP:
/* ... */
if(substr($_POST["dateiname"],$laenge-3,$laenge)=='php' || substr($_POST["dateiname"],$laenge-3,$laenge)=='csv') { 
    echo "Sie versuchen eine geschützte Datei zu löschen!"; 
} else { 
    if(unlink($_POST["userfile"])) { 
        echo "Datei ".$_POST["userfile"]." gelöscht!"; 
    } else { 
        echo "Datei ".$_POST["userfile"]." konnte nicht gelöscht werden!"; 
    } 
} 
/* ... */
 
Zuletzt bearbeitet:
Zurück