Wiederholte Formularübermittlung ist das häufigste Problem bei Mehrbenutzer-Webanwendungen und verursacht viel Ärger. Es gibt viele Anwendungsszenarien, bei denen wiederholte Übermittlungsprobleme auftreten, z. B.:
Klicken Sie zweimal auf die Schaltfläche „Senden“.
Klicken Sie auf die Schaltfläche „Aktualisieren“.
Verwenden Sie die Zurück-Schaltfläche des Browsers, um den vorherigen Vorgang zu wiederholen, was zu wiederholten Formularübermittlungen führt.
Verwenden Sie den Browserverlauf, um Formulare erneut zu senden.
Doppelte HTTP-Anfragen vom Browser.
Mehrere Möglichkeiten, um das wiederholte Absenden von Formularen zu verhindern
Deaktivieren Sie die Schaltfläche „Senden“. Verwenden Sie Javascript, um die Schaltfläche „Senden“ nach dem Absenden des Formulars zu deaktivieren. Dieser Ansatz verhindert, dass ungeduldige Benutzer mehrmals auf die Schaltfläche klicken. Es gibt jedoch ein Problem. Wenn der Client Javascript deaktiviert, ist diese Methode ungültig.
In meinem vorherigen Artikel habe ich gesagt, dass die Verwendung einiger JQuery-Plug-Ins gut funktioniert.
Post-/Redirect-/Get-Modus. Bei der Seitenumleitung nach der Übermittlung handelt es sich um das sogenannte Post-Redirect-Get-Muster (PRG). Kurz gesagt: Wenn der Benutzer das Formular absendet, führen Sie eine clientseitige Umleitung durch und gelangen zur Seite mit den Informationen zum Übermittlungserfolg.
Dadurch können wiederholte Übermittlungen vermieden werden, die durch das Drücken von F5 durch den Benutzer verursacht werden, und es wird keine Warnung vor wiederholten Übermittlungen des Browserformulars angezeigt. Außerdem können dieselben Probleme beseitigt werden, die durch das Drücken der Vorwärts- und Rückwärtstasten des Browsers verursacht werden .
Speichern Sie ein spezielles Flag in der Sitzung. Wenn die Formularseite angefordert wird, wird eine spezielle Zeichenfolge generiert, in der Sitzung gespeichert und im ausgeblendeten Feld des Formulars platziert. Überprüfen Sie beim Akzeptieren und Verarbeiten von Formulardaten, ob die Identifikationszeichenfolge vorhanden ist, löschen Sie sie sofort aus der Sitzung und verarbeiten Sie die Daten dann normal.
Wenn festgestellt wird, dass in der Formularübermittlung keine gültige Flag-Zeichenfolge vorhanden ist, bedeutet dies, dass das Formular bereits übermittelt wurde und diese Übermittlung ignoriert wird.
Dies verleiht Ihrer Webanwendung einen erweiterten XSRF-Schutz.
Einschränkungen in der Datenbank hinzufügen. Fügen Sie eindeutige Einschränkungen hinzu oder erstellen Sie eindeutige Indizes in der Datenbank, um doppelte Daten zu verhindern. Dies ist die effektivste Möglichkeit, eine doppelte Übermittlung von Daten zu verhindern.