首頁 > 後端開發 > php教程 > 如何防止 Web 應用程式中意外重新提交表單?

如何防止 Web 應用程式中意外重新提交表單?

Susan Sarandon
發布: 2024-11-13 00:43:02
原創
553 人瀏覽過

How Can I Prevent Unintended Form Resubmission in Web Applications?

防止意外的表單重新提交

由於頁面刷新而重新提交表單是 Web 應用程式中常見的煩惱。為了有效地處理這個問題,採用以下策略至關重要:

提交後重定向

不要在同一頁上顯示回應,而是將使用者重新導向到提交表格後單獨的頁面。這確保了刷新頁面載入時,它是一個新的 GET 請求,而不是已處理的 POST 請求的重複。

範例:

// submit
// set success flash message (you are using a framework, right?)
header('Location: /path/to/record');
exit;
登入後複製

停用瀏覽器快取

防止瀏覽器快取您的表單,將快取以下標頭部添加到您的PHP腳本中:

header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
登入後複製

唯一頁面令牌

為每個表單提交在伺服器上產生唯一令牌。將此標記作為隱藏欄位包含在表單中,並在處理之前對其進行驗證。如果令牌不符或遺失,則將請求作為重複提交丟棄。

範例(有會話令牌):

<?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
}
登入後複製

結論

透過實作這些技術,您可以有效防止不必要的表單重新提交由於頁面刷新,並確保您的Web 應用程式按預期運行。

以上是如何防止 Web 應用程式中意外重新提交表單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板