php防止刷新
Ⅰ 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,參考資料:
在進行數據處理和保存前,首先判斷瀏覽器的獲得頁面方式。使用$_SERVER
["REQUEST_METHOD"]變數來獲得瀏覽器的獲得頁面方式。檢查其是否為」POST」。在
腳本中使用session來記錄用戶是否通過正常途徑(即填寫提交內容的頁面)來提
交數據。或使用$_SERVER["HTTP_REFERER"]來檢測,但不推薦這樣做。因為部分瀏
覽器沒有設置REFERER,有部分防火牆也會屏蔽REFERER。另外,我們也要對提交內
容檢查,看資料庫中是否有重復內容。以留言本為例,使用Session進行判定:
填寫瀏覽內容的頁面中,我們在最前端加上:
$_SESSION["allowgbookpost"]=time(); //登記填寫時的時間
在接受留言數據並保存的頁面中我們在進行數據處理前我們也用Session進行
以下處理:
if(strtoupper($_SERVER["REQUEST_METHOD"])!=」POST」){ die("錯誤:請勿在外
部提交。"); } //檢查頁面獲得方法是否為POST
if(!isset($_SESSION["allowgbookpost"]) or
(time()-$_SESSION["allowgbookpost"] < 10)){ die("錯誤:請勿在外部提交。
"); } //檢查留言填寫時的時間
if(isset($_SESSION["gbookposttime"]) and
(time()-$_SESSION["gbookposttime"] < 120)){ die("錯誤:兩次提交留言的間
隔不得少於 2 分鍾。"); } //檢查留言間隔
unset($_SESSION["allowgbookpost"]); //注銷allowgbookpost變數以防止一次進
入填寫頁面多次進行提交
$_SESSION["gbookposttime"]=time(); //登記發送留言的時間,防止灌水或惡意攻擊
...
數據處理及保存
...
Ⅲ 如何防止刷新頁面帶來的瀏覽次數的增加 - PHP進階討論
用COOKIE記錄用戶最後一次訪問的頁面地址和時間當請求新頁面時,判斷請求頁面的地址與COOKIE中記錄的最後一次訪問頁面地址是否相同。如果相同,在判斷此此請求的時間與COOKIE的時間進行比較,如果時間差小於N秒,就可以認為用戶是在刷新。如果不是刷新,就更新COOKIE中的頁面地址和訪問時間
Ⅳ php 如何避免刷新頁面重復插入數據到資料庫
每次進入提交的頁面,給一個session,為了避免重復,session的key可以是隨機的。
在表單填寫頁面
<?php
session_start(); // 啟用session
$time = time();
$key = 'sess_' . $time; // 根據時間生成一個隨機的session key
$_SESSION[$key] = $time; // 設置session的值
?>
<!--{通過隱藏表單將 session 的 key傳遞到服務端處理}-->
<input type="hidden" name="session_key" value="<?php echo $time;?>" />
處理頁面
<?php
session_start(); // 啟用session
$key = $_POST['session_key'];
if(!$key || $_SESSION[$key] != substr($key, 5)){
// 如果沒有傳 session_key 參數
// 或者 session_key 參數值截斷 sess_後的數字 與 session參數值不匹配
unset($_SESSION[$key]); // 刪除 session 值
// 然後考慮是否要提示錯誤,或者轉入另一個頁面
exit(); // 終止頁面代碼執行
}
// 下面進行數據寫操作
// 數據操作完成後,刪除session
unset($_SESSION[$key]);
// 後續操作
?>
$########################
一個頁面也是一樣的,我給你的只是一個思維,
具體如何實現,你要根據自己的實際情況去處理
很多東西都不是通用的
另外,不管多少個頁面,必然包含兩個部分,一部分是表單填寫,一部分是數據處理,這個跟多少個頁面無關~~就看你是否能夠理解這段代碼的意義,如果不理解的話,嵌套進去也沒啥用,能夠理解的話,或許你能夠找出更適合自己的解決方案
Ⅳ php防止刷新
<?php
session_start();
$allow_sep = "3";
if (isset($_SESSION["post_sep"]))
{
if (time() - $_SESSION["post_sep"] < $allow_sep)
{
exit("請不要反復刷新");
}
else
{
$_SESSION["post_sep"] = time();
}
}
else
{
$_SESSION["post_sep"] = time();
}
?>
之所以不能用cookie,是為了防止關閉瀏覽器的cookie後惡意刷新
Ⅵ php怎麼禁止瀏覽器刷新
這個要用js來做
Ⅶ 用php語言寫程序,怎樣防止刷新頁面
你是要完全防惡意刷新還是為了減輕伺服器壓力?
完全防止惡意刷新。使用 SESSION 或者 COOKIE。記錄訪問頁面的時間。如果小於3秒就中斷程序運行。顯示空白頁。
減輕伺服器壓力的話。你可以使用輸出緩存功能。
代碼跟據原理自己寫就行了。本來就不復雜。
Ⅷ php如何避免刷新頁面重復提交
可以採用ajax配合使用php可以防止刷新頁面重復提交
也可以使用框架同樣可以防止
你直接訪問數據處理頁面的時候,$_POST['title'],$_POST['num] 應該是空值,所以你增加一個判斷,必須有具體的值,再進行sql操作。
Ⅸ PHP避免刷新頁面重復提交
這個解決的辦法是在 x.php 中加入跳轉代碼,使頁面跳轉就好了,例如,html->x.php->數據處理後跳轉到成功頁面->success.html
Ⅹ php怎樣防止刷新重復提交
通常是在表單中增加一個驗證碼。這是防無意刷新的簡便方法。一刷新,驗證碼自動更新,處理程序就會檢測到驗證碼不對。