Verhindern mehrfacher Einfügungen beim Senden eines Formulars in PHP
Mehrfache Einfügungen beim Senden eines Formulars können auftreten, wenn der Benutzer mehrmals auf die Schaltfläche „Senden“ drückt. Dies kann zu einer unbeabsichtigten Datenduplizierung führen. Es gibt mehrere Ansätze, dieses Problem zu beheben:
JavaScript-Senden-Schaltfläche deaktivieren:
Diese Methode verwendet JavaScript, um die Senden-Schaltfläche zu deaktivieren, nachdem sie aktiviert wurde geklickt. Es ist jedoch nicht zuverlässig, da Formulare ohne Verwendung der Schaltfläche oder mit deaktiviertem JavaScript übermittelt werden können.
PHP-Sitzungszeitstempel:
Dieser Ansatz Setzt eine Sitzungsvariable ($_SESSION['posttimer']) bei der Formularübermittlung auf den aktuellen Zeitstempel. Während der Formularverarbeitung prüft es, ob die Variable vorhanden ist und vergleicht sie mit dem aktuellen Zeitstempel. Wenn der Zeitunterschied kleiner als ein vordefinierter Schwellenwert (z. B. 2 Sekunden) ist, wird eine doppelte Übermittlung erkannt.
Eindeutige Token-Inklusion:
Bei dieser Methode wird in jedes Formular ein eindeutiges Token eingefügt. Eine Sitzungsvariable enthält das im Formular verwendete Token. Beim Absenden des Formulars wird ein neues Token generiert. Wenn das übermittelte Token nicht mit dem Sitzungstoken übereinstimmt, wird dies als doppelte Übermittlung betrachtet. Beispiel:
// form.php
$_SESSION['token'] = md5(session_id() . time());
echo '';
// foo.php
if (isset($_SESSION['token'])) {
if (isset($_POST['token']) && $_POST['token'] != $_SESSION['token']) {
// Double submit detected
}
}
Durch die Implementierung einer dieser Methoden können Sie mehrfache Einfügungen beim Senden von Formularen in PHP effektiv verhindern, die Datenintegrität sicherstellen und unbeabsichtigte Duplikate vermeiden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3