Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich eine unbeabsichtigte erneute Formularübermittlung in Webanwendungen verhindern?

Wie kann ich eine unbeabsichtigte erneute Formularübermittlung in Webanwendungen verhindern?

Susan Sarandon
Susan SarandonOriginal
2024-11-13 00:43:02562Durchsuche

How Can I Prevent Unintended Form Resubmission in Web Applications?

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!

Stellungnahme:
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