Wie verhindert man mehrere Einfügungen beim Senden von Formularen in PHP?

Linda Hamilton
Freigeben: 2024-10-21 21:32:02
Original
854 Leute haben es durchsucht

How to Prevent Multiple Inserts When Submitting Forms in PHP?

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, um dieses Problem zu beheben:

  1. Deaktivierung der JavaScript-Senden-Schaltfläche:

    Diese Methode verwendet JavaScript, um die Senden-Schaltfläche nach der Aktivierung zu deaktivieren geklickt. Es ist jedoch nicht zuverlässig, da Formulare ohne Verwendung der Schaltfläche oder mit deaktiviertem JavaScript übermittelt werden können.

  2. PHP-Sitzungs-Zeitstempel:

    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.

  3. Eindeutige Token-Einbindung:

    Diese Methode beinhaltet das Einfügen eines eindeutigen Tokens in jedes Formular. 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:

    <code class="php">// form.php
    $_SESSION['token'] = md5(session_id() . time());
    
    echo '<form action="foo.php" method="post">
           <input type="hidden" name="token" value="' . $_SESSION['token'] . '" />
           <input type="text" name="bar" />
           <input type="submit" value="Save" />
        </form>';
    
    // foo.php
    if (isset($_SESSION['token'])) {
        if (isset($_POST['token']) && $_POST['token'] != $_SESSION['token']) {
            // Double submit detected
        }
    }</code>
    Nach dem Login kopieren

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.

Das obige ist der detaillierte Inhalt vonWie verhindert man mehrere Einfügungen beim Senden von Formularen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!