Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Post dynamisch gestalten
Frage
Nabend,
hänge irgendwie schon den ganzen Abend daran eine Post-Abfrage dynamisch zu gestalten.
Also innerhalb einer while-Schleife die Dateien in einem Verzeichnis abfragt und tabellerarisch auflistet gibt es eine Checkbox die es ermöglichen soll mehrere Dateien auf einmal zu löschen.
Also die Checkbox sieht so aus:
[code]<input name="del' . $del_id++ .'" type="checkbox" id="delete" value="' . $Datei . '">[/code]
Die wird dann in der gleichen while-Schleife abgefragt, das Form-Tag ruft die Datei nochmal auf.
[code]if($_GET['del' . $del_id .''] == $Datei) unlink($Pfad . "/" . $Datei;[/code]
Leider funktioniert das nicht so wie geplant. ;)
Kann das überhaupt gehen mit der if-Abfrage oben?
Würde ja den Code posten ... aber: [quote]Bitte maximal 10000 Zeichen eingeben.[/quote]
Antwort 1 von S1lv3R
Also nochmal den kompletten Code jetzt:
http://www.russland-online.org/sn.php
btw seh grad das oben GET steht, war zu Testzwecken ob er es auch richtig schreibt. ;)
http://www.russland-online.org/sn.php
btw seh grad das oben GET steht, war zu Testzwecken ob er es auch richtig schreibt. ;)
Antwort 2 von Supermax
Am besten definiertst du die Checkboxes als Array:
In $_POST bzw. $_GET hast du dann ein Array $_POST['del'] (die [] beim Feldnamen schneidet PHP beim Parsen der Formulardaten weg).
Mit einer einfachen Schleife kann dann über das Array iteriert werden:
Das "basename()" ist nur eine Sicherheitsvorkehrung, damit niemand z.B. durch einen manipulierten POST-Request mit einem Dateinamen, der "../" enthält, aus dem Verzeichnis $Pfad "ausbrechen" kann und somit beliebige Dateien aus deinem Verzeichnis löscht.
'<input type="checkbox" name="del[]" value="'.$Datei.'" ...>In $_POST bzw. $_GET hast du dann ein Array $_POST['del'] (die [] beim Feldnamen schneidet PHP beim Parsen der Formulardaten weg).
Mit einer einfachen Schleife kann dann über das Array iteriert werden:
foreach($_POST['del'] as $Dateiname) {
unlink($Pfad.'/'.basename($Dateiname));
}Das "basename()" ist nur eine Sicherheitsvorkehrung, damit niemand z.B. durch einen manipulierten POST-Request mit einem Dateinamen, der "../" enthält, aus dem Verzeichnis $Pfad "ausbrechen" kann und somit beliebige Dateien aus deinem Verzeichnis löscht.
Antwort 3 von S1lv3R
Ui, funktioniert. :)
Danke auch für den Tipp mit basename, werde in Zukunft drauf achten.
Grüße,
S1lv3R
Danke auch für den Tipp mit basename, werde in Zukunft drauf achten.
Grüße,
S1lv3R

