[PHP]防止表單重復提交的幾種方法


---------------------------------------------------------------------------------------------------

1. 使用JS讓按鈕在點擊一次后禁用(disable)。=> 防止多次點擊發生,實現方式較簡單。

  缺點:若客戶端禁止JavaScript腳本,則失效。

 

2. 在提交成功后執行頁面重定向(redirect)。=> 轉到提交成功信息頁面。

  特點:避免F5重復提交,消除瀏覽器前進和后退按導致的同樣問題。

 

3. 表單隱藏域中存放session(表單被請求時生成的標記)。=> 接收表單數據后,檢查此標志值是否存在,先進行刪除,然后處理數據; 若不存在,說明已提交過,忽略本次提交。

/*
|---------------------------------
|原理 & 代碼示例
|@黑眼詩人 <www.farwish.com>
|---------------------------------
*/
//服務端生成隨機數存入session, 分配至表單頁
$data['sess_id'] = $_SESSION['sid'] = mt_rand(1000, 9999);
$this->load->view('form', $data);

//表單頁隱藏域存放此session值
<input type="hidden" name="sid" value="<?=$sess_id; ?>">

//處理
if($_POST['sid'] != '' && $_POST['sid'] == $_SESSION['sid'])
{
 unset($_SESSION['sid']);

 echo '處理數據';
}
else
{
 echo '已提交過表單';
}

 

4. 數據庫唯一索引約束(最有效的防止重復數據的方法)。

 

Link: http://www.cnblogs.com/farwish/p/3911588.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM