F5 / Seite aktualisieren abfangen
zeneca
- html
Hallo liebe Leute,
ich weiß jetzt nicht in welches Themengebiet meine Frage optimal paßt
aber einfaches html kommt mir dabei am sinnvollsten vor.
Mein Problem ist anhand eines Beispiels relativ leicht zu erklärt,
Bei meiner Seite kann man einen Datensatz in einem Formular zusammenstellen
und wenn man dann auf "der Datenbank hinzufügen" klickt,
wird der Inhalt in einer Tabelle eingetragen
und wenn man jetzt F5 bzw. "aktuelle Seite neu laden" klickt
wird logischer Weise der gleiche Datensatz abermals hinzugefügt (u.s.w.)
weil (zumindest der Firefox) auch die ganzen Formulardaten neu überträgt
gibt es da irgend eine Möglichkeit das zu unterbinden,
oder sonstwie abzufangen,
oder habe ich da einen konzeptionellen Fehler in meinem Programm?
ich habe es erfolglos mit diversen unsets (php) versuch
und konnte auch sonst nichts im Netzt finden
ich bin um jeden Vorschlag dankbar
Lieber Gruß
Zen
gibt es da irgend eine Möglichkeit das zu unterbinden,
oder sonstwie abzufangen,
Ja, du prüfst serverseitig ob der Datensatz schon vorhanden ist. Wenn ja, wird eine Fehlermeldung generiert.
oder habe ich da einen konzeptionellen Fehler in meinem Programm?
Ja, offensichtlich prüfst du keine Datensätze vor dem Eintragen. Kann sein, dass du dadurch richtig schöne Sicherheitslücken zusätzlich im System hast.
Wenn du den Datensatz vor dem Eintragen prüfst, ist dein Problem an sich eh schon gelöst, du musst nur die Abfrage anpassen.
BTW: Hätte evtl. Sinn gemacht, wenn du geschrieben hättest, welche Programmiersprache du serverseitig verwendest.
Hallo liebe Leute,
ich weiß jetzt nicht in welches Themengebiet meine Frage optimal paßt
aber einfaches html kommt mir dabei am sinnvollsten vor.Mein Problem ist anhand eines Beispiels relativ leicht zu erklärt,
Bei meiner Seite kann man einen Datensatz in einem Formular zusammenstellen
und wenn man dann auf "der Datenbank hinzufügen" klickt,
wird der Inhalt in einer Tabelle eingetragen
und wenn man jetzt F5 bzw. "aktuelle Seite neu laden" klickt
wird logischer Weise der gleiche Datensatz abermals hinzugefügt (u.s.w.)
weil (zumindest der Firefox) auch die ganzen Formulardaten neu überträgtgibt es da irgend eine Möglichkeit das zu unterbinden,
oder sonstwie abzufangen,
oder habe ich da einen konzeptionellen Fehler in meinem Programm?ich habe es erfolglos mit diversen unsets (php) versuch
und konnte auch sonst nichts im Netzt findenich bin um jeden Vorschlag dankbar
Lieber Gruß
Zen
Du kannst nach dem Eintragen zb weiterleiten. (header("Location: url"))
Du kannst ein Cookie setzen.
Du kannst unique constraints in die DB hauen.
Du kannst die IP und SessionID mitloggen und mit nem timestamp dann auch länger sperren.
Je nachdem was du machen möchtest
Moin!
Bei meiner Seite kann man einen Datensatz in einem Formular zusammenstellen
und wenn man dann auf "der Datenbank hinzufügen" klickt,
wird der Inhalt in einer Tabelle eingetragen
und wenn man jetzt F5 bzw. "aktuelle Seite neu laden" klickt
wird logischer Weise der gleiche Datensatz abermals hinzugefügt (u.s.w.)
Ja. Solche eines-für-alle-Skripte sind Murks.
Besser ist: Skript 1 macht nur den Eintrag in die Datenbank (und KEINERLEI Ausgaben!) und leitet den User-Agent (Browser) mit header ('Location ...');
zu einem zweiten Skript weiter, welches wieder nur für die Anzeige sorgt.
Das umgeht dann dieses leidige "Sie haben da einen Haufen Daten übertragen, die nochmal übertragen werden müssten. Wollen das wirklich?". Natürlich nur in dem Fall, dass es sich beim letzten Request um einen POST-Request handelt.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
[latex]Mae govannen![/latex]
und wenn man jetzt F5 bzw. "aktuelle Seite neu laden" klickt
wird logischer Weise der gleiche Datensatz abermals hinzugefügt (u.s.w.)
weil (zumindest der Firefox) auch die ganzen Formulardaten neu überträgt
Die Umleitung per redirect wurde ja bereits angesprochen, Stichwort PRG-Pattern
Stur lächeln und winken, Männer!
Kai