php亂七八糟的問題-防止重複提交

1. 使用JS讓按鈕在點擊一次後禁用(disable)。採用這種方法可以防止多次點擊的發生,實現方式較簡單。

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

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

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

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

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

公司測試亦大傻測出了數據庫多條記錄的問題,顯然是重複插入,於是百度了一下。

上面種是腳本之家提供的方法,本人感覺第一種太low(js大神不要打我),於是使用了第二種,但本人不喜歡自己寫頁面,但也試了試,太醜,淘汰。採用了第3種解決,第四種看了看,以後再深入吧

/*
//服務端生成隨機數存入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 '已提交過表單';
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章