防止意外的表單重新提交
由於頁面刷新而重新提交表單是 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中文網其他相關文章!