Hello,
Daten werden über php in das Formular geschrieben und per POST und php nach Abschicken in eine Datenbank geschrieben. Jetzt habe ich den Fall, dass ich eine Liste mit Tasks habe
- 2017-02-26 Im SelfhtmlForum fragen stellen - Erledigt
- 2017-02-27 Antwort in Script einbauen - Erledigt
- 2017-02-28 Kopf einschalten und selber nachdenken - Erledigt
- .
- .
wobei das "Erledigt" hinter jedem Eintrag im Prinzip der Submit Button ist. Wenn ich auf Erledigt klicke wird in der Datenbank der Status des Eintrags geändert.
Meine Fragen mache ich die gesamte Liste in einem "<form>" Element, oder benötige ich für jeden Eintrag ein eigenes <form></form> Konstrukt? Wenn in einem einzigen - auf was muss ich achten?
Klar, könnte ich das auch mit einem Häckchen oder Select Button machen und dann am Ende der Liste einen einzigen Submit Button - aber ich fände diese Lösung schöner.
Sicherer ist immer die Einzelbearbeitung.
Bei Verwendung eines Grids ist die Fehler- und Manipulationsgefahr größer.
Man kann aber etwas dagegen tun:
Beim Aufruf einer Seite mit mehreren Datenzeilen schreibt man deren IDs in die Session. Kommt jetzt eine Änderungs- oder Löschanfrage hierfür, muss die ID auch in der Session stehen. Erst dann wird abgearbeitet.
Das gemeinsame Abarbeiten im Update geht z. B bequem mit der Klausel "where ID in(1,5,70,99)".
Wenn Du es noch manipulatinssicherer haben willst, also dass garantiert nur Datensätze bearbeitet (update, delete) werden können, die direkt davor zur Sicht selektiert wurden, dann übersetzt Du in der Session die realen IDs in Schlüssel, z. B $key = md5('geheim' . ID) und sendest nur diese Schlüssel zu Client. So kann dann ein User wirklich nur die Datensätze manipulieren, die er auch sehen durfte.
Liebe Grüße
Tom S.
Die Krawatte ist das Kopftuch des Westens