Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Welche Methoden gibt es, um doppelte Veröffentlichungen in einem Formular zu verhindern? (PHP)

Wenn Sie doppelte Übermittlungen verhindern möchten, müssen Sie den Status „wird übermittelt“ im Vergleich zu „wird nicht übermittelt“ speichern. Sie haben mehrere Möglichkeiten, wo Sie diese Informationen aufbewahren können.

  • Datenbank - Fügen Sie ein verborgenes Feld mit einem automatisch generierten Wert hinzu, der eindeutig ist (Sie können eine kurze zufällige Zeichenfolge generieren und die aktuelle Uhrzeit anhängen). Dieser Wert kann auch verwendet werden, um die Konversation zu identifizieren – wenn Sie eine zustandsbehaftete Webkonversation benötigen. Fügen Sie diesen Wert der Datenbank hinzu und machen Sie ihn eindeutig. Nachteile:redundante Speicherung in der Datenbank, reduzierte Performance beim Einfügen von Kommentaren, muss einen eindeutigen String generieren.
  • Sitzung - Fügen Sie dasselbe versteckte Feld mit einem Wert hinzu, der in einer ähnlichen Angelegenheit generiert wurde. Wenn der Benutzer das Formular absendet, speichern Sie den Wert in der Sitzung, falls er noch nicht vorhanden ist. Ist dies der Fall, handelt es sich um eine doppelte Einreichung. Nachteile:Sie müssen immer noch das eindeutige Token generieren.
  • Browser - (1) Fügen Sie JavaScript hinzu, um die Schaltfläche "Senden" zu deaktivieren, sobald darauf geklickt wird. (2) ein verborgenes Feld haben, das mit dem Wert 0 beginnt und auf 1 geändert wird, wenn der Benutzer auf die Schaltfläche „Senden“ klickt. Wenn der Benutzer erneut auf die Schaltfläche klickt, prüfen Sie, ob der Wert 1 ist, und brechen ab, wenn dies der Fall ist. Vorteile:kein eindeutiger String. Nachteile:erfordert aktiviertes Javascript; Sie benötigen die Zeichenfolge möglicherweise sowieso, um zustandsbehaftete Webkonversationen zu implementieren.