Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Verhinderung der wiederholten Übermittlung von Formularen in PHP (Codebeispiel)

Einführung in die Verhinderung der wiederholten Übermittlung von Formularen in PHP (Codebeispiel)

不言
不言nach vorne
2019-02-11 09:21:122448Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die PHP-Methode zur Verhinderung der wiederholten Übermittlung von Formularen (Codebeispiele). Ich hoffe, dass er Ihnen als Referenz dienen wird.

Beschämt muss ich sagen, dass ich vor ein paar Tagen einen einfachen Fehler gemacht habe, als ich an einem Projekt gearbeitet habe. Bei der Übermittlung von Formularen im Backend des Unternehmens wurde eines von meinen eigenen Mitarbeitern verwendet und das andere von mir selbst in HTML geschrieben. Das Formular wurde wiederholt ohne Überprüfung übermittelt und das Ergebnis war ein Fehler. Schreiben Sie es auf und notieren Sie es, um sich daran zu erinnern und es niemals zu vernachlässigen.

Lösungen

Tatsächlich gibt es viele Methoden, ich gebe nur ein paar einfache Beispiele.

Framework

Viele Frameworks haben die Funktion, wiederholte Einreichungen zu verhindern. Jeder sollte davon wissen, daher werde ich hier nicht auf Details eingehen.

Frontend

Das Prinzip ist sehr einfach. Nachdem der Benutzer auf „Senden“ geklickt hat, verwenden Sie einfach JS, um die Schaltfläche „Senden“ auszublenden.

Das Backend

verwendet auch PHP zur Verifizierung, natürlich ist es nicht auf die folgenden Typen beschränkt

Cookie

Der Benutzer sendet das Formular an die Backend, im Cookie Machen Sie eine Markierung, und wiederholte Übermittlungen innerhalb der angegebenen Zeit sind ungültig. Diese Methode schlägt jedoch fehl, wenn der Benutzer Cookies deaktiviert.

<?php

if (isset($_COOKIE['formFlag'])) {
    exit('error');
}

// 处理数据

// 30秒内重复提交无效
setcookie('formFlag', time(), time() + 30);

Sitzung

Beim Anzeigen der Formularseite wird eine Zufallszahl generiert und in der Sitzung und dem ausgeblendeten Feld des Formulars gespeichert. Vergleichen Sie beim ersten Senden den Wert in der Sitzung und löschen Sie ihn erfolgreich.

<?php

if (!isset($_SESSION['formFlag']) || $_POST['formFlag'] != $_SESSION['formFlag']) {
    exit('error');
}

// 处理数据

unset($_SESSION['formFlag']);

Das obige ist der detaillierte Inhalt vonEinführung in die Verhinderung der wiederholten Übermittlung von Formularen in PHP (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen