Ich versuche, eine Bearbeitungsoption für den Bilddateinamen hinzuzufügen und auch die Option für die Bilder zu löschen. Alle Bilder sind in einem Ordner und ich habe überhaupt keine Datenbank verwendet. Ich bin in der Lage, die Bilddateinamen zusammen mit der Schaltfläche zum Bearbeiten und Löschen neben jedem Bildnamen anzuzeigen.
Aber ich bin mir nicht sicher, wie ich weitermachen soll. Ich weiß, dass PHP eine unlink()
und rename()
Funktionen hat. aber ich bin nicht sicher, wie man diese Funktionen dynamisch einschließt.
Zunächst einmal ist das eine gefährliche Sache, die du dort machst und du solltest es vermeiden. Stellen Sie sich vor, was passieren könnte, wenn jemand eine Punktekombination wie diese ../../
; Das Skript hätte alle Dateien in zwei Ebenen aufgelistet. Um dieses Verhalten zu verhindern, müssen wir die path
-Eingabezeichenfolge für Schrägstriche und umgekehrte Schrägstriche überprüfen und die Funktion glob
nicht ausführen, wenn einige Schrägstriche vorhanden sind gefunden. Hier ist der reguläre Ausdruck, um die path
-Abfrage zu validieren:
Ich habe anhand Ihres Codes ein sehr einfaches Beispiel erstellt. Alle Befehle werden an PHP übergeben, indem Formulardaten an den Server gesendet werden ( nicht AJAX ). Wenn der Benutzer auf die Schaltfläche Löschen klickt, wird eine Bestätigungsmeldung angezeigt, und wenn der Benutzer auf OK klickt, werden die Daten der Löschschaltfläche im Formular gespeichert, nämlich in name="delete"
und value="path/filename.ext"
. Wir haben einen $_POST['delete'] == "path/filename.ext"
-Wert in PHP. Wenn wir die delete
in unseren POST-Daten finden, rufen wir unlink
auf und wir löschen die Datei. Für die Umbenennungsfunktionalität verwenden wir diesmal die gleiche Methode, diesmal jedoch mit der Javascript-Eingabeaufforderung, die den Benutzer auffordert, einen neuen Dateinamen einzugeben. Wenn sich der neue Dateiname vom Original unterscheidet, aktualisiert er ein verstecktes Feld mit dem neuen Dateinamen und bucht die Formularfelder in unser PHP-Serverskript; Die POST-Daten haben diese Werte für die rename
-Funktion $_POST['rename'] == "path/oldfilename.ext"
und $_POST['renameto'] == "newfilename.ext"
. Dann rufen wir einfach die Umbenennungsfunktion am Anfang unseres Skripts auf.
Tipp : Verwenden Sie PHP print_r
function, um das $_POST
-Array in einem HTML <pre></pre>
zu drucken, um Post-Daten auf jeder Seitenaktualisierung zu debuggen:
Das endgültige Arbeitsskript
%Vor%Sie müssen den Dateipfad an unlink () übergeben. Wenn Sie mehrere Dateien entfernen möchten, müssen Sie mehrere Male die Verknüpfung aufheben. Wenn Sie die Dateipfade zu einem Array schieben, können Sie die Pfade durchlaufen.
%Vor%Wenn Sie die Datei umbenennen möchten, müssen Sie auch den vollständigen Pfad angeben, Andernfalls erstellen Sie eine neue Datei woanders:
%Vor%Diese Information muss von einem Benutzer zumindest in den meisten Fällen bereitgestellt werden. Ich würde empfehlen, die Pfade und Dateinamen in einer Datenbank zu speichern.
Ich bin mir nicht sicher, wie ich diese Funktionen dynamisch einfügen soll
Aufgrund Ihrer Frage und Ihres Codes sieht es so aus, als könnten Sie die Dateien löschen oder umbenennen, suchen aber nach einer Arbeitsablaufberatung.
Ich gebe folgende Vorschläge. Wenn Sie Code wünschen, stelle ich gerne meine Lösungen zur Verfügung, aber der Umfang einer Schnittstelle ist ziemlich groß und muss erst geklärt werden. Zum Beispiel
Meine Empfehlungen:
Verwenden Sie eine Tabelle, um die Dateien anzuzeigen. Über der Tabelle befinden sich Schaltflächen für "Ausgewählte löschen", "Abbrechen"
Fügen Sie die folgenden Spalten in die Tabelle ein:
Die Tabelle befindet sich in einem Formular, so dass jedes <input>
mit einer name
-Eigenschaft in $_POST
endet. Die Eingaben zum Umbenennen und Senden einer Datei sehen beispielsweise wie folgt aus:
Dabei ist $filefull
der vollständige Pfad zur Datei und $name
ohne Pfad. Wenn Sie auf die Schaltfläche Umbenennen klicken, enthält $_POST
Elemente mit jedem Dateinamen, denen filer-
vorangestellt ist, damit ich sie leicht erkennen kann. Ich weiß, welchen man umbenennen oder löschen muss, basierend auf dem Submit Button, was ich an der var erkennen kann, der das Präfix fprename-
hat.
Wenn ich also von $_POST
var mit dem Namen $_POST['fprename-/path/myfile.jpg']
zurückkomme, suche ich nach der Eingabe var $_POST['filer-/path/myfile.jpg']
und benenne die Datei auf den darin enthaltenen Wert um (natürlich überprüfe ich zuerst, dass eine Datei mit diesem Namen nicht existiert Es gibt sie noch nicht).
Arbeitsablauf:
Zum Löschen mehrerer Dateien
Delete Selected
submit-Button klickt. onSubmit
gibt ein Javascript alert()
, um die Löschanforderung abzubrechen. Zum Löschen oder Umbenennen einzelner Dateien
onclick
gibt ein Javascript alert()
, um das Löschen oder Umbenennen der Anfrage zu erlauben. Im folgenden Beispiel erlaube ich nicht das Löschen mehrerer Dateien, sondern nur die Auswahl mehrerer Dateien - daher die Schaltfläche "Auswählen" oben anstelle von "Auswahl löschen".
Tags und Links javascript php