Heim > Artikel > Backend-Entwicklung > Wie kann ich eine unbeabsichtigte erneute Formularübermittlung in Webanwendungen verhindern?
Verhindern einer unbeabsichtigten erneuten Formularübermittlung
Die erneute Formularübermittlung aufgrund einer Seitenaktualisierung ist ein häufiges Ärgernis in Webanwendungen. Um dieses Problem effektiv zu lösen, ist es wichtig, die folgenden Strategien anzuwenden:
Nach der Übermittlung weiterleiten
Anstatt die Antwort auf derselben Seite anzuzeigen, leiten Sie den Benutzer zu a weiter separate Seite, sobald das Formular abgeschickt wurde. Dadurch wird sichergestellt, dass es sich beim Laden der aktualisierten Seite um eine neue GET-Anfrage handelt und nicht um eine Wiederholung der bereits verarbeiteten POST-Anfrage.
Beispiel:
// submit // set success flash message (you are using a framework, right?) header('Location: /path/to/record'); exit;
Browser-Caching deaktivieren
Um zu verhindern, dass der Browser Ihr Formular zwischenspeichert, fügen Sie die folgenden Header zu Ihrem PHP-Skript hinzu:
header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache');
Unique Page Token
Generieren Sie für jede Formularübermittlung ein eindeutiges Token auf dem Server. Fügen Sie dieses Token als ausgeblendetes Feld in das Formular ein und überprüfen Sie es vor der Verarbeitung. Wenn das Token nicht übereinstimmt oder fehlt, verwerfen Sie die Anfrage als doppelte Übermittlung.
Beispiel (mit Sitzungstoken):
<?php session_start(); // Generate a unique token and store it in the session $token = md5(uniqid(mt_rand(), true)); $_SESSION['token'] = $token; ?> <!DOCTYPE html> <html> <body> <form action="submit.php" method="post"> <input type="text" name="name"> <input type="hidden" name="token" value="<?php echo $token; ?>"> <input type="submit" value="Submit"> </form> </body> </html>
<?php session_start(); // Get the submitted token $token = $_POST['token']; // Check if the token matches the session token if ($token != $_SESSION['token']) { // Discard the request } else { // Process the form data }
Fazit
Durch die Implementierung dieser Techniken können Sie unerwünschte erneute Formularübermittlungen aufgrund von Seitenaktualisierungen wirksam verhindern und sicherstellen, dass sich Ihre Webanwendung wie beabsichtigt verhält.
Das obige ist der detaillierte Inhalt vonWie kann ich eine unbeabsichtigte erneute Formularübermittlung in Webanwendungen verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!