php防止刷新重復提交
① php 如何防止表單重復提交呢
在php中如何防止表單的重復提交
<?php
/*
*php中如何防止表單的重復提交
*/
session_start();
if(empty($_SESSION['ip'])){//第一次寫入操作,判斷是否記錄了IP地址,以此知道是否要寫入資料庫
$_SESSION['ip']=$_SERVER['REMOTE_ADDR'];//第一次寫入,為後面刷新或後退的判斷做個鋪墊
//...........//寫入資料庫操作
}else{//已經有第一次寫入後的操作,也就不再寫入資料庫
echo'請不要再次刷新和後退';//寫一些已經寫入的提示或其它東西
}
?>
還有辦法就是:
1、在頁面生成隨機碼,也就是每次提交隨機碼都不一樣,在提交的時候驗證隨機碼!
2、在提交的時候,驗證如果數據存在,就不提交了
② php中如何防止刷新一次提交一次
1.session記錄
submit.php為發送頁面,在這個頁面上設置一個session變數,,並作為隱藏域和表單一起發送到,submitdeal.php頁面..在伺服器端把post上來的隱藏變數和伺服器端記錄的session變數進行對比,,比如一樣,則寫入資料庫並清除session,這樣用戶刷新頁面,兩個值不相等提示錯誤或跳轉
優點:不用用戶輸入驗證碼,
缺點:表單容易被復制
2.驗證碼
原理和第一種一樣,,只是session數據不作為隱藏域提交,,而是讓用戶填寫,大多數網站都彩用,,有文字驗證碼和圖片驗證碼,,圖片驗證碼安全性高..別
3.IP綁定
提交數據後,先從IP表裡檢索客戶端IP,如果有,並且沒有過期,那麼報錯,否則寫入資料庫,然後再取客房端IP,把IP寫入資料庫,,
4.cookie
客戶提交後處理程序先檢索客戶端有沒有設置cookie,如果有,則不重復提交,如果沒有,則寫數據,,再寫個cookie;
說得不是很明白,希望你能看明白一點點...圖片驗證碼最常用
③ PHP如何避免表單的重復提交
你是否遇到過「重復提交」的問題?要解決這個問題其實並不難。這里有一個簡單的方法避免同一表單的重復提交。 首先,我們可以定義一個session變數用來保存一個表單的提交序列號。這里我定義為「$userLastAction」。然後在表單里加入一個hidden變數,把值設為$userLastAction 1: 最後,在處理提交之前判斷表單是否已被提交過: if($lastAction$userLastAction and inputIsValid(...)){ $userLastAction ; // 序列號加1 // 處理表單數據}原文:Avoid multiple form submissions Submitted By: Douglas E. Cook Date: 07/26/00 19:46 Does your database suffer from "plicate post" syndrome? The cure isnt too difficult. Here is a simple way to prevent users from submitting the same form multiple times. First, declare a session variable to store a serial number for each form. I call mine "$userLastAction." Then, in every form where plicate submission is a problem, include a hidden field, and set the value to $userLastAction 1: Finally, verify that the form has not been previously submitted before acting on the submission: if($lastAction$userLastAction and inputIsValid(...)){ $userLastAction ; // Increment serial number // Act on form here}譯自:phpbuilder 這只是一個小技巧,用來避免一個表單的重復提交。這樣多少可以防止一些灌水的現象,另外有時候由於網路狀況等原因用戶不知道提交是否成功,也會再次提交同一份表單。 這個技巧的主要原理是不允許用戶回退後再次提交,也就是說回退後修改再提交也是不允許的,而且也不能避免Ctrl-C/Ctrl-V的灌水辦法。究竟有沒有用,還是看各位站長的喜好了
④ 提交表單的時候大家有什麼防止用戶刷新重復提交的方法 - PHP進階討論
有個BBS系統是緩存了提交的內容,然後2次提交如果內容相同就會出現錯誤,這樣也防止了刷新提交..gulser
發表於
2009-10-10
19:44[i][/url][/b]那也是cookie緩存,
用文本緩存,
要區分不同的用戶,有點難。
⑤ PHP中如何實現防刷新機制
最常見的防刷新肯定是在處理表單的時候,防止重復提交。我們有很多種方式來處理:1、提交表單之後,進行跳轉,這是很常用的方式。如果你的表單是從index.php提交到post.php頁面處理的,那麼提交完之後可以跳轉再回到index.php頁面,這樣再刷新就不會重復提交了。如果你是提交給當前頁面處理,可以在提交之後再重新跳轉到當前頁面。2、使用驗證碼,也很常用。在提交表單數據之前先判斷驗證碼,由於每提交一次,驗證碼就會變,所以這樣是可以避免重復提交的。3、使用Ajax方式,毫無疑問可以避免刷新重復提交。以上討論的是針對表單提交的防刷新,那麼其他的防刷新呢?比如,我要統計一篇文章的點擊數,我希望當用戶刷新頁面的時候,不進行統計,該怎麼辦呢?在此,站長只提供一種不完美的解決方案:即在當前的會話中,不統計重復載入。請看下面的代碼:<?php session_start();if(!$_SESSION['sid']){ $_SESSION['sid']=session_id(); echo 『您在此次會話中第一次瀏覽該頁面,進行統計』;}else{echo 『您已經在此次會話中瀏覽過該頁面,不統計』; }?>當用戶在第一次會話中訪問頁面時,進行統計,並把當前的會話id存在session,如果用戶刷新或者從瀏覽器重新載入,由於在當前會話中已經訪問過了,所以不會再次統計。但是,如果當用戶關閉瀏覽器後再瀏覽,是會統計的。在此,站長也就文章統計是否有必要做得這么精確,說一些個人看法吧。用戶瀏覽你網站的文章有這么幾種方式:1、通過點擊站內鏈接2、直接輸入網址3、通過第三方的鏈接或者跳轉這三種都構成正常的訪問,是應該統計的。刷新,嚴格來說確實不應該算進統計中去,而且在多進程的瀏覽器中,用戶打開新窗口重復輸入網址也跟刷新差不多,而文章的真實訪問量和重復刷新量之間的差距肯定是非常大的,所以即便是將刷新的次數算進統計中去,也不會產生太大的影響。上面的代碼,實現了不完美的防刷新,但是卻多出了額外的判斷,而且使用session也是要消耗資源的。
⑥ 有沒有簡單的方法防止網頁刷新等導致數據重復提交到資料庫,求詳細代碼,謝謝!!!
防止網頁刷新導致數據重復提交,可以在表單中添加Token令牌機制,這即保證了安全性(防CSRF攻擊),又能夠驗證重復提交,每次生成表單頁面時,會生成一個Token,在每次提交數據時,都要求檢查Token,通過token檢驗合法的請求,可以多去看看實戰教程。