日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
探討PHP表單重復(fù)提交的預(yù)防法則

PHP表單在提交的過程中經(jīng)常會遇到重復(fù)提交的問題。那么,今天我們就為大家介紹有關(guān)PHP表單重復(fù)提交的避免方法。這兩天在考慮關(guān)于PC端的避免表單重復(fù)提交和頁面刷新,導(dǎo)致數(shù)據(jù)庫重復(fù)操作的情況處理。

成都創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、海港網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為海港等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

現(xiàn)在羅列一下,關(guān)于避免PHP表單重復(fù)提交的常用幾種常規(guī)方案,以下是源碼:

1.使用客戶端JS腳本
提到客戶端腳本,經(jīng)常使用的是JavaScript進(jìn)行常規(guī)輸入驗(yàn)證。

 
 
 
  1. < form method="post" name="register" 
  2. action="test.php" enctype="multipart/form-data">   
  3. < input name="text" type="text" id="text" />
  4. < input name="cont" value="提交" type="button" 
  5. onClick="document.register.cont.value='正在提交,請等待...';  
  6. document.register.cont.disabled=true;
  7. document.the_form.submit();"> 
  8. < /form> 

#t#當(dāng)用戶單擊“提交”按鈕后,該按鈕將變?yōu)榛疑豢捎脿顟B(tài)。

上面的例子中使用OnClick事件檢測用戶的提交狀態(tài),如果單擊了“提交”按鈕,該按鈕立即置為失效狀態(tài),用戶不能單擊按鈕再次提交。

還有一個(gè)方法,也是利用JavaScript的功能,但是使用的是OnSubmit()方法,如果已經(jīng)提交過一次表單,將立即彈出對話框,代碼如下:

 
 
 
  1. < input type="hidden" name="originator" value=""> 
  2. 在接收頁面的PHP代碼如下:  
  3. < ?phpsession_start();if(isset($_POST['originator'])) {  
  4. if($_POST['originator'] == $_SESSION['code']){// 處理該表單的語句,省略  
  5. }else{  
  6. echo ‘請不要刷新本頁面或重復(fù)提交表單!’;  
  7. }  
  8. }?> 

在上例中,如果用戶已經(jīng)單擊“提交”按鈕,該腳本會自動記錄當(dāng)前的狀態(tài),并將submitcount變量自加
1,當(dāng)用戶試圖再次提交時(shí),腳本判斷submitcount變量值非零,提示用戶已經(jīng)提交,從而避免重復(fù)提交表單。

2.使用Cookie處理
使用Cookie記錄表單提交的狀態(tài),根據(jù)其狀態(tài)可以檢查是否已經(jīng)提交表單,請見下面的代碼:

 
 
 
  1. < ?php  
  2. if(isset($_POST['go'])){setcookie("tempcookie","",time()+30);  
  3. header("Location:".$_SERVER[PHP_SELF]);exit();  
  4. } if(isset($_COOKIE["tempcookie"])){  
  5. setcookie("tempcookie","",0);echo "您已經(jīng)提交過表單";  
  6. }?> 

如果客戶端禁止了Cookie,該方法將不起任何作用,這點(diǎn)請注意。

3.使用Session處理
利用PHP的Session功能,也能避免PHP表單重復(fù)提交。Session保存在服務(wù)器端,在PHP運(yùn)行過程中可以改變Session變量,下次訪問這個(gè)變量時(shí),得到的是新賦的值,所以,可以用一個(gè)Session變量記錄表單提交的值,如果不匹配,則認(rèn)為是用戶在重復(fù)提交,請見如下代碼:

 
 
 
  1. < ?php  
  2. session_start();//根據(jù)當(dāng)前SESSION生成隨機(jī)數(shù)  
  3. $code = mt_rand(0,1000000);  
  4. $_SESSION['code'] = $code;  
  5. ?> 

在頁面表單上將隨機(jī)數(shù)作為隱藏值進(jìn)行傳遞,代碼如下:

 
 
 
  1. < input type="hidden" name="originator" value="< ?=$code?>"> 

在接收頁面的PHP代碼如下:

 
 
 
  1. < ?php  
  2. session_start();  
  3. if(isset($_POST['originator'])) {  
  4. if($_POST['originator'] == 
    $_SESSION['code']){  
  5. // 處理該表單的語句,省略  
  6. }else{  
  7. echo ‘請不要刷新本頁面或
    重復(fù)提交表單!’;  
  8. }  
  9. }?> 

4.使用header函數(shù)轉(zhuǎn)向
除了上面的PHP表單重復(fù)提交的預(yù)防方法之外,還有一個(gè)更簡單的方法,那就是當(dāng)用戶提交表單,服務(wù)器端處理后立即轉(zhuǎn)向其他的頁面,代碼如下所示。

 
 
 
  1. if (isset($_POST['action']) 
    && $_POST['action'] == 'submitted') {  
  2. //處理數(shù)據(jù),如插入數(shù)據(jù)后,立即轉(zhuǎn)向到其他頁面  
  3. header('location:submits_success.php');  
  4. }  

以上就是PHP表單重復(fù)提交的幾個(gè)預(yù)防方法的介紹。


分享名稱:探討PHP表單重復(fù)提交的預(yù)防法則
本文來源:http://www.5511xx.com/article/cdeihcp.html