使用PHP 防止多次表單提交
在Web 開發中,當使用者重複點擊提交時,必須防止多次表單提交按鈕。這可能會導致意外的結果,例如重複的資料條目或意外的行為。 PHP 提供了多種技術來防止此問題。
一種有效的方法是利用獨特的表單標記。當顯示表單時,會產生一個唯一的令牌並將其儲存在會話中。提交表單後,將根據儲存的版本檢查令牌。如果標記匹配,則處理表單提交。如果不這樣做,提交將被拒絕,從而防止多次提交。
這是一個簡單的 PHP 實作:
session_start(); function getToken() { $token = sha1(mt_rand()); if (!isset($_SESSION['tokens'])) { $_SESSION['tokens'] = array($token => 1); } else { $_SESSION['tokens'][$token] = 1; } return $token; } function isTokenValid($token) { if (!empty($_SESSION['tokens'][$token])) { unset($_SESSION['tokens'][$token]); return true; } return false; } $postedToken = filter_input(INPUT_POST, 'token'); if (!empty($postedToken)) { if (isTokenValid($postedToken)) { // Process form } else { // Handle error } } $token = getToken();
<form method="post"> <fieldset> <input type="hidden" name="token" value="<?php echo $token; ?>" /> <!-- Add form content --> </fieldset> </form>
要增強安全性,請將此令牌驗證與重定向結合起來關於表單提交。這可確保當使用者按下後退按鈕時,會顯示帶有新令牌的新表單。這種模式稱為 POST / 重定向 / GET,進一步防止多次提交並保持向後和向前相容性。
以上是如何使用 PHP 防止多次表單提交?的詳細內容。更多資訊請關注PHP中文網其他相關文章!