Löschen von Dateien vom FTP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ale
beurteilen
check
code
datei
eindeutigen namen
erfolg
fehler
fehlerfall
file
formular
forum
hilfe
nachricht
not
pfad
test
url
verzeichnis
zeile
-
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> $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ück</a> </body> </html>
Beitrag zuletzt geändert: 1.1.2011 13:10:09 von piratentaverne -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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> $file<br>\n"; } } echo "<input type="submit" value="Lö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 ) 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)) { ...
-
Naja das alte Skript lief ja, nur das Problem is, dass unlink() nich funktioniert (s. oben)! Somit kann ich keine Dateien löschen!
-
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!
-
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 -
Das sieht nur so aus!
<?php unlink(/uploads/$file) ?>
Beitrag zuletzt geändert: 2.1.2011 14:10:18 von piratentaverne -
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!
echo '<form action="delete_abfrage.php" method="post"> while ($file = readDir($verzeichnis)) { if ($file != "." && $file != "..") { echo '<input type="checkbox" name="file" value=""'.$file.'"" /><label> "'.$file.'"</label><br>'; }} echo '<input type="submit" value="Löschen"></form>';
In der Datei delete_abfrage.php:
unlink('/uploads/'.$_POST['file']);
-
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 -
Was steht da in der Datei? Eben war die Datei doch nur 3 zeilen lang!
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> ',$file,'</label><br>';
heißen muss.
Wahrscheinlich war das der Fehler. -
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?
-
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 -
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öscht werden!';} else { echo"Die Dateien konnten leider nicht gelö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 -
ja das was du löschen willst in deinem Fall halt
unlink(/uploads/$file)
war mir bloß zu lang zu schreiben -
Danke hab nur noch ma die Frage geändert siehe (eins oben)! Das wäre meine zweite Frage gewesen !
-
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. -
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öscht werden!"; } else { echo"Die Dateien konnten leider nicht gelöscht werden!"; } ?> </html>
Beitrag zuletzt geändert: 2.1.2011 17:55:34 von piratentaverne -
<html> <title>Check</title> <?php $erfolg = unlink('uploads/'.$_POST['file']); if ($erfolg == true) { echo"Die Dateien konnten erfolgreich gelöscht werden!"; } else { echo"Die Dateien konnten leider nicht gelöscht werden!"; } ?> </html>
Beitrag zuletzt geändert: 2.1.2011 18:07:26 von jupictures -
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage