Aktueller Standort: Startseite> Neueste Artikel> Wie man wiederholte Einreichungen von PHP -Formen verhindern: Praktische Lösungen

Wie man wiederholte Einreichungen von PHP -Formen verhindern: Praktische Lösungen

gitbox 2025-06-18

1. Problemhintergrund

In der Entwicklung von Webanwendungen sind Formulare eine wichtige Möglichkeit für Benutzer, mit dem System zu interagieren. Benutzer senden jedoch manchmal mehrmals Formulare, was nicht nur zu Datenverdoppelung führt, sondern auch die Systemleistung und die Datenkonsistenz beeinflussen kann.

2. Lösung

Um eine wiederholte Einreichung von Formularen durch Benutzer zu vermeiden, können wir die folgenden wirksamen Lösungen annehmen:

2.1 Schaltfläche "Senden" deaktivieren

Deaktivieren Sie die Schaltfläche "Senden" über den JavaScript -Code, um zu verhindern, dass Benutzer mehrmals auf die Schaltfläche "Senden" klicken. Das Folgende ist der entsprechende Beispielcode:

 
document.getElementById("submitBtn").disabled = true;
        

2.2 Erzeugen Sie eindeutige Kennungen

Wenn das Formular geladen wird, wird eine eindeutige Kennung in einer Sitzung oder einem Cookie erzeugt und gespeichert. Senden Sie bei der Übermittlung des Formulars die Kennung zusammen und überprüfen Sie, ob die Kennung auf der Serverseite vorhanden ist. Wenn es existiert, bedeutet dies eine wiederholte Einreichung. Hier ist der Beispielcode:

 
// Erzeugen Sie eindeutige Kennungen
$token = md5(uniqid(rand(), true));
// Lagern Sie die Kennung insessionodercookieMitte
$_SESSION['form_token'] = $token;
// 在表单Mitte添加隐藏字段来存储标识符
echo "<input type='hidden' name='form_token' value='{$token}'>";
        

Vergleichen Sie bei der Überprüfung der Einreichung auf der Serverseite, ob die eingereichte Kennung mit der gespeicherten Kennung übereinstimmt:

 
// Holen Sie sich die eingereichte Kennung
$submittedToken = $_POST['form_token'];
// Holen Sie sich die gespeicherte Kennung
$storedToken = $_SESSION['form_token'];
// Vergleichen Sie, ob die beiden Kennungen konsistent sind
if ($submittedToken === $storedToken) {
    // Ausführen von Formulareinstellungsverarbeitung ausführen
    unset($_SESSION['form_token']);
} else {
    echo "Bitte senden Sie das Formular nicht wiederholt";
}
        

2.3 Umleiten der Seite

Nach dem Senden des Formulars kann der Server den Benutzer auf eine andere Seite umleiten (z. B. die erfolgreiche Seite senden). Auf diese Weise wird der Server auch wenn der Benutzer die Seite aktualisiert oder auf die Ausschreibungsseite zurückkehrt, und verhindern so ein neues Commit, wodurch doppelte Commits verhindert werden. Der Beispielcode lautet wie folgt:

 
// Verarbeitungsformulareinreichungslogik
header("Location: success.php");
exit;
        

Es ist zu beachten, dass bei der Umleitung der Seite entsprechende Eingabeaufforderungsinformationen bereitgestellt werden sollten, um den Benutzer darüber zu informieren, dass das Formular erfolgreich eingereicht wurde.

2.4 Verwenden der serverseitigen Technologie

Zusätzlich zur Front-End-Lösung können wir die serverseitige Technologie verwenden, um wiederholte Einreichungen von Formularen zu verhindern. Beispielsweise kann eine Datenbank verwendet werden, um Datensätze für jedes Commit zu speichern und die Einzigartigkeit des Commits zu überprüfen.

3. Zusammenfassung

Das wiederholte Verhindern von Benutzern ist ein wichtiges Problem in der Webentwicklung. Dieses Problem kann effektiv gelöst werden, indem die Schaltfläche Senden, eindeutige Bezeichner, die Umleitung von Seiten und die serverseitige Überprüfung generiert werden. Wählen Sie die entsprechende Lösung entsprechend den Bedürfnissen und optimieren Sie die Benutzererfahrung.