kostenloser Webspace werbefrei: lima-city


Löschen von Dateien vom FTP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    piratentaverne

    piratentaverne hat kostenlosen Webspace.

    Hallo und zwar hab ich ein kleines Problemchen! Und zwar möchte ich dass man per Checkbox auswählen kann, welche Dateien gelöscht werden sollen. Wie kann ich die Checkboxen hier einfügen? Und die Files sind als $file definiert! Würden dann nicht alle gelöscht werden? Und mein Server zeigt wenn ich unlink() benutze irgendwie an:
    Warning: unlink() [function.unlink]: open_basedir restriction in effect. File() is not within the allowed path(s): (/users/forum-bc/temp:/users/forum-bc/www) in /users/forum-bc/www/upload/delete.php on line 16

    <html>
    <body>
    <P>
    <?php
    // Öffnet ein Unterverzeichnis mit dem Namen "daten"
    $verzeichnis = openDir("./uploads");
    // Verzeichnis lesen
    while ($file = readDir($verzeichnis)) {
     // Höhere Verzeichnisse nicht anzeigen!
     if ($file != "." && $file != "..") {
     // Link erstellen
      echo "<input type=checkbox name=löschen[] value=$file>&nbsp;$file<br>\n";
     }
    }
      echo "<p><form action=delete_abfrage.php><input type=submit>\n";
     // Verzeichnis schließen
    closeDir($verzeichnis);
    ?> 
    <P>
    <a href="intern.php?page=downloads">Zur&uuml;ck</a>&nbsp;&nbsp;
    </body>
    </html>


    Beitrag zuletzt geändert: 1.1.2011 13:10:09 von piratentaverne
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. j********s

    Erstmal ist dein Formular vom HTML-Code glaube ich nicht ganz richtig. Korrekt müsste es eigentlich lauten:
    echo "<form action="delete_abfrage.php" method="post"><input type=checkbox name=löschen[] value=$file>&nbsp;$file<br>\n";
     }
    }
      echo "<input type="submit" value="L&ouml;schen"></form>\n";


    Desweiteren müsstest der Checkbox einen eindeutigen Namen geben, oder wie willst du nachher beurteilen, was angeklickt wurde?
    Damit werden dann auch nicht ale Dateien gelöscht, da du mit readDir die Einträge im Verzeichnis einzeln ausliest und sie aufgrund des eindeutigen Namens einzeln löschen kannst!

    Für den Pfad überprüfe noch einmal (hast du wahrscheinlich eh schon gemacht :wink:) das hier, sonst kann ich dir im Moment leider auch nicht weiterhelfen:
    $pfad = 'mein/pfad/uploads/' //Vom Skript aus gesehen angeben. Hier müsste dein Fehler liegen
    $verzeichnis = openDir($pfad)
    while ($file = readDir($verzeichnis)) { ...




  4. Autor dieses Themas

    piratentaverne

    piratentaverne hat kostenlosen Webspace.

    Naja das alte Skript lief ja, nur das Problem is, dass unlink() nich funktioniert (s. oben)! Somit kann ich keine Dateien löschen!
  5. j********s

    Laut der Fehlermeldung funktioniert aber open_Dir nicht, da der angegebene Pfad nicht existiert. Deswegen solltest du dir absolut sicher sein, dass der Pfad stimmt!
  6. Autor dieses Themas

    piratentaverne

    piratentaverne hat kostenlosen Webspace.

    Der Pfad stimmt, da ich ein Skript habe, welche alle Dateien in einem Ordner anzeigt und das sieht genauso aus! Und es zeigt auch alle Dateien dort drinnen an!

    Beitrag zuletzt geändert: 1.1.2011 16:00:20 von piratentaverne
  7. j********s

    Dann poste doch mal deinen unlink-Skript!:wink:

    lg
  8. Autor dieses Themas

    piratentaverne

    piratentaverne hat kostenlosen Webspace.

    Das sieht nur so aus!

    <?php
    unlink(/uploads/$file)
    ?>


    Beitrag zuletzt geändert: 2.1.2011 14:10:18 von piratentaverne
  9. j********s

    Is klar, dass das nicht funktionieren kann!
    Woher soll unlink denn wissen, was $file ist? Da $file keine globale Variable ist und nicht mit der Url oder dem Formular an die neue Datei weitergeleitet wird, ist die Variable nicht belegt als $file = ''
    Deswegen schrieb ich ja oben:
    Desweiteren müsstest der Checkbox einen eindeutigen Namen geben, oder wie willst du nachher beurteilen, was angeklickt wurde?
    Damit werden dann auch nicht ale Dateien gelöscht, da du mit readDir die Einträge im Verzeichnis einzeln ausliest und sie aufgrund des eindeutigen Namens einzeln löschen kannst!


    Am einfachsten ist, wenn du das Formular den Inhalt von $file via method="post" schicken lässt. Dann weiß unlink auch was es zu löschen hat!:wink:

    echo '<form action="delete_abfrage.php" method="post">
    while ($file = readDir($verzeichnis)) {
         if ($file != "." && $file != "..") {
              echo '<input type="checkbox" name="file" value=""'.$file.'"" /><label>&nbsp;"'.$file.'"</label><br>'; }}
        echo '<input type="submit"  value="L&ouml;schen"></form>';


    In der Datei delete_abfrage.php:

    unlink('/uploads/'.$_POST['file']);
  10. Autor dieses Themas

    piratentaverne

    piratentaverne hat kostenlosen Webspace.

    Vielen Dank ;)! Jetzt gehts! Aber wie kann man noch sagen lassen, dass es funktioniert hat?

    Beitrag zuletzt geändert: 2.1.2011 17:14:54 von piratentaverne
  11. j********s

    Was steht da in der Datei? Eben war die Datei doch nur 3 zeilen lang!:eek:
    No such file or directory in /users/forum-bc/www/upload/delete_abfrage.php on line 8


    Mir ist gerade noch aufgefallen das es in der anderen Datei
    echo '<input type="checkbox" name="file" value="',$file,'" /><label>&nbsp;',$file,'</label><br>';

    heißen muss.
    Wahrscheinlich war das der Fehler.
  12. Autor dieses Themas

    piratentaverne

    piratentaverne hat kostenlosen Webspace.

    Ja, hab ich ja geändert^^! Ich will nur noch, dass wenn es erfolgreich war ein bestimmter Text angezeigt wird und wenn nicht ein anderer! Wie geht das?
  13. j********s

    Rückgabewerte

    Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

    http://php.net/manual/de/function.unlink.php

    =>
    $erfolg = unlink(blabla);
    if ($erfolg == true){
         echo'Es hat geklappt';}
         else {
              echo'Nich geklappt';}


    Beitrag zuletzt geändert: 2.1.2011 17:26:27 von jupictures
  14. Autor dieses Themas

    piratentaverne

    piratentaverne hat kostenlosen Webspace.

    Jetzt steht aber folgendes da:
    Skript
    <html>
    <title>Check</title>
    <?php
    unlink('uploads/'.$_POST['file']);
    
    $erfolg = unlink('uploads/'.$_POST['file']);
    if ($erfolg = true)
    {
         echo'Die Dateien konnten erfolgreich gel&ouml;scht werden!';}
    else {
              echo"Die Dateien konnten leider nicht gel&ouml;scht werden!";
    }
    ?>
    </html>


    Nachricht:

    Warning: unlink(uploads/test.jpg) [function.unlink]: No such file or directory in /users/forum-bc/www/upload/delete_abfrage.php on line 6
    Die Dateien konnten erfolgreich gelöscht werden!


    Beitrag zuletzt geändert: 2.1.2011 17:31:44 von piratentaverne
  15. j********s

    ja das was du löschen willst in deinem Fall halt
    unlink(/uploads/$file)

    war mir bloß zu lang zu schreiben :wink:
  16. Autor dieses Themas

    piratentaverne

    piratentaverne hat kostenlosen Webspace.

    Danke hab nur noch ma die Frage geändert siehe (eins oben)! Das wäre meine zweite Frage gewesen ;-)!
  17. j********s

    Erstens muss es
    if ($erfolg == true)

    heißen sonst tritt der if-Fall immer ein, weil du der Variablen einen neuen Wert zu weist.

    Zweitens: Überprüfe nocheinmal ob es das Verzeichnis uploads/test.jpg von der Datei mit dem unlink aus gesehen existiert. Ich tippe mal auf nein! Dann musst du den Link noch entsprechend anpassen, d.h. so das du von der unlink-Datei direkt dort hin kommst.
  18. Autor dieses Themas

    piratentaverne

    piratentaverne hat kostenlosen Webspace.

    Ah ok, aber jetzt zeigt es nur noch false an, dass heißt nur noch die Nachricht für False, da Zeile 7 falsch ist (siehe unten fett)!!
    Es zeigt nämlich jetzt an: Warning: unlink(uploads/) [function.unlink]: Is a directory in /users/forum-bc/www/upload/delete_abfrage.php on line 7

    <html>
    <title>Check</title>
    <?php
    
    unlink('uploads/'.$_POST['file']);
    
    $erfolg = unlink("uploads/$file");   <--Falsche Zeile
    
    if ($erfolg == true)
    {
    echo"Die Dateien konnten erfolgreich gel&ouml;scht werden!";
    }
    else 
    {
    echo"Die Dateien konnten leider nicht gel&ouml;scht werden!";
    }
    ?>
    </html>


    Beitrag zuletzt geändert: 2.1.2011 17:55:34 von piratentaverne
  19. j********s

    <html>
    <title>Check</title>
    <?php
    
    $erfolg = unlink('uploads/'.$_POST['file']);
    
    
    if ($erfolg == true)
    {
    echo"Die Dateien konnten erfolgreich gel&ouml;scht werden!";
    }
    else 
    {
    echo"Die Dateien konnten leider nicht gel&ouml;scht werden!";
    }
    ?>
    </html>


    Beitrag zuletzt geändert: 2.1.2011 18:07:26 von jupictures
  20. Autor dieses Themas

    piratentaverne

    piratentaverne hat kostenlosen Webspace.

    Ahhh, ok! Jetzt gehts! Vielen vielen Dank für deine Tipps ;-) und deine Hilfe!

    Beitrag zuletzt geändert: 3.1.2011 14:13:11 von piratentaverne
  21. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!