① php 在自己本身的頁面如何防止重復提交的
一般來說,PHP最主流的方式,是通過在表單中添加一個隱藏欄位,使用類似md5、uniqid這類函數來生成一個隨機碼進行提交。
驗證表單的時候,可以將相應的隨機碼進行緩存、對比。如果存在已緩存的隨機碼,就認為該表單已經被提交了,返回錯誤就可以了。
另外,在用戶體驗方面,可以在用戶點擊提交後,將提交按鈕disabled幾秒鍾,就避免了用戶誤操作提交多次(當然,這只是用戶體驗層面的,無法阻擋惡意提交)
② php選擇框的session防止重復提交問題
大致看了下,主要兩個問題:
1)session_start(),代碼里僅在沒有提交且沒有生成過session時才執行,這直接導致提交時$_SESSION未定義
2)隱藏值originator,value="<?=$value?>">,$value從哪來的?應該是$code吧。但如果是$code,那必然又和$_SESSION['code']一致了
可以考慮以$_SESSION['code']是否存作為判斷是否第一次提交的依據,示例代碼如下:
----------------------------------------------------------
<?php session_start(); ?>
<!-- 頁面顯示部分 -->
<html>
<form id="form2" name="form2" method="post" action="">
<div align="left">請選擇數據:
<select name="select" id="select">
<?php
$App = new AppInfo();
$appData=$App->appInfo;
foreach ($appData as $k=>$v) {
echo '<option value="', $v['id'], '">', $v['name'], '</option>';
}
?>
</select>
<input type ="submit" value ="提交"/>
</div>
</form>
<input type="button" value="返回主頁" onclick="location.href='/player/server/views/index.html'">
<!-- 提交處理部分 -->
<?php
if( isset( $_POST['select'] ) ){
if( isset( $_SESSION['code'] ) ){
echo '請不要刷新頁面或重復提交表單!';
}else{
$uss = new UserAction();
$uss->userSubmit($_POST['select']);
$_SESSION['code'] = TRUE;
}
}?>
</html>
③ php通過記錄IP來防止表單重復提交方法分析
本文實例分析了php通過記錄IP來防止表單重復提交方法。分享給大家供大家參考。具體分析如下:
這個原理比較的簡單就是用戶第一次提交時我們記錄提交用戶的IP地址,這樣如果用戶在固定時間內再次提交表單就會提示重復提交了,這種做法通常用於在頂一下,支持一下這種應用中了,在防止數據重復提交是一個非常不好的選擇.
例子,代碼如下:
復制代碼
代碼如下:<?php
session_start();
if(empty($_SESSION['ip']))//第一次寫入操作,判斷是否記錄了IP地址,以此知道是否要寫入資料庫
{
$_SESSION['ip']=$_SERVER['REMOTE_ADDR'];//第一次寫入,為後面刷新或後退的判斷做個鋪墊
mysql_query("INSERT
INTO
admin(id,
name,
age)
VALUES(123,
'姚明',
25)");//寫入資料庫操作
}
else//已經有第一次寫入後的操作,也就不再寫入資料庫
{
echo
'請不要重復提交表單或刷新頁面';//寫一些已經寫入的提示或其它東西
}
?>
還有辦法就是:
1:在頁面生成隨機碼,也就是每次提交隨機碼都不一樣,在提交的時候驗證隨機碼!
2:在提交的時候,驗證如果數據存在,就不提交了.
如果你想防止重復提交入庫IP不是最好的辦法,我們可以在資料庫中查詢是不是有相同記錄並且IP是不是想同再進行處理.
例子,代碼如下:
復制代碼
代碼如下:$sql
="select
*
from
表名
where
buy_tel='電話'
and
IP='$ip'
";//
and
$time-buy_date<60
$query
=
$db->query(
$sql
);
if(
$db->rows(
$query
)
)
{
echo('<script>alert("您己提交過了,請勿重復提交!");</script>');
}
else
{
//進行入庫操作
}
希望本文所述對大家的PHP程序設計有所幫助。
④ thinkphp 防止重復提交數據。
親,你可以加驗證碼驗證啊!~~
第一次產生驗證碼,然後驗證完成後就將驗證碼更新掉,這樣他再提交驗證碼就錯誤了,驗證碼錯誤就不讓他提交,直接轉向就好了!~~
驗證碼是防止重復提交的一個簡單的方式,目前還是比較有效的!~~
而且tp生成驗證碼很簡單,驗證也很方便的!~~
具體可以參考文檔這里:http://document.thinkphp.cn/manual_3_2.html#verify
希望對你有幫助,如果有幫助,記得採納喲!~~
⑤ PHP防止重復提交方法
你都已經會用token來做防提交了,用$_COOKIE來設定時間
提交成功,保存COOKIE
setcookie('lastposttime',time(),time()+86400*24);
然後判斷發布時間
time()-$_COOKIE['lastposttime'])<60(單位秒)
現在就不會重復提交了
⑥ php 如何防止表單重復提交呢
在php中如何防止表單的重復提交
<?php
/*
*php中如何防止表單的重復提交
*/
session_start();
if(empty($_SESSION['ip'])){//第一次寫入操作,判斷是否記錄了IP地址,以此知道是否要寫入資料庫
$_SESSION['ip']=$_SERVER['REMOTE_ADDR'];//第一次寫入,為後面刷新或後退的判斷做個鋪墊
//...........//寫入資料庫操作
}else{//已經有第一次寫入後的操作,也就不再寫入資料庫
echo'請不要再次刷新和後退';//寫一些已經寫入的提示或其它東西
}
?>
還有辦法就是:
1、在頁面生成隨機碼,也就是每次提交隨機碼都不一樣,在提交的時候驗證隨機碼!
2、在提交的時候,驗證如果數據存在,就不提交了
⑦ php如何避免刷新頁面重復提交
可以採用ajax配合使用php可以防止刷新頁面重復提交
也可以使用框架同樣可以防止
你直接訪問數據處理頁面的時候,$_POST['title'],$_POST['num] 應該是空值,所以你增加一個判斷,必須有具體的值,再進行sql操作。
⑧ php 提交表單到當前頁面如何防止頁面刷新重復提交~
最常用的方法就是利用token。即:
1、在生成頁面的時候生成一個token(隨機字元串),並把它同時寫入表單的某個hidden中,和服務端的session中。
2、客戶端提交表單到伺服器時,比對表單中的token與session中的token是否一致。若不一致則認為是無效的請求。
3、不管第2步的校驗是否通過,token只要使用一次後就立即作廢(即:從session中銷毀)。同時token也可以關聯時間信息,超時後也自動作廢。
這樣,即便客戶端重復提交,也只有第一次的請求能夠成功。
⑨ php如何防止重復提交
您可以加上表單令牌,或者使用隨機數的方式來阻止