成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

探討PHP表單重復提交的預防法則

開發 后端
PHP表單重復提交的預防方法有很多種,我們可以使用客戶端JS腳本;使用Cookie處理;使用Session處理和使用header函數轉向萊解決這一問題。

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

現在羅列一下,關于避免PHP表單重復提交的常用幾種常規方案,以下是源碼:

1.使用客戶端JS腳本
提到客戶端腳本,經常使用的是JavaScript進行常規輸入驗證。

 

  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#當用戶單擊“提交”按鈕后,該按鈕將變為灰色不可用狀態。

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

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

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


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

2.使用Cookie處理
使用Cookie記錄表單提交的狀態,根據其狀態可以檢查是否已經提交表單,請見下面的代碼:

 

 

  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 "您已經提交過表單";  
  6. }?> 

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

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

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

在頁面表單上將隨機數作為隱藏值進行傳遞,代碼如下:

  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 ‘請不要刷新本頁面或
    重復提交表單!’;  
  8. }  
  9. }?> 

4.使用header函數轉向
除了上面的PHP表單重復提交的預防方法之外,還有一個更簡單的方法,那就是當用戶提交表單,服務器端處理后立即轉向其他的頁面,代碼如下所示。

 

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

以上就是PHP表單重復提交的幾個預防方法的介紹。

責任編輯:曹凱 來源: 百度博客
相關推薦

2010-11-23 16:56:04

mysql表單

2013-11-13 14:39:53

表單提交開發

2013-11-13 11:01:14

表單表單重復提交表單策略

2009-12-01 16:34:21

PHP表單

2009-11-17 11:30:31

PHP表單

2009-12-11 10:41:11

PHP變量解析順序

2009-06-30 15:19:55

Form表單JSP入門

2009-11-30 15:58:13

PHP數學函數

2009-06-05 10:37:52

struts2 國際化表單

2009-12-02 09:21:04

PHP數據過濾

2009-12-07 16:07:03

PHP類的繼承

2009-11-24 14:06:46

PHP應用領域

2009-12-10 15:00:20

PHP獲取checkb

2009-12-02 19:42:24

PHP頁面自動跳轉

2009-12-03 09:49:59

PHP分頁導航函數

2009-11-23 10:31:25

PHP使用JSON

2009-11-30 18:59:52

PHP數組排序

2010-07-21 09:38:15

PHP緩存技術

2010-07-29 16:38:14

Flex表單

2009-11-25 11:33:26

PHP驗證表單
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黑人精品欧美一区二区蜜桃 | 能免费看的av | 99久久精品国产一区二区三区 | 成人精品一区二区三区四区 | 午夜精品一区二区三区在线视 | 亚洲视频免费在线播放 | 久久精品—区二区三区 | 福利网站导航 | 久综合 | www.99热| 做a视频| 欧美亚洲国产日韩 | 天天操 天天操 | 噜啊噜在线 | 亚洲一区二区日韩 | 永久网站 | 亚洲香蕉| 日本不卡一区二区三区在线观看 | 亚洲综合色自拍一区 | 亚洲精品一区二区三区中文字幕 | 91精品久久久久久久久 | 亚洲精品资源 | 欧美一区两区 | www国产亚洲精品 | 成人av播放 | 在线日韩不卡 | 91中文字幕在线观看 | 精品在线99| 国产精品视频免费播放 | 福利视频日韩 | 日韩精品一区二区三区视频播放 | 综合久 | 欧美日韩中文字幕在线 | 伊人伊人网 | 超碰在线国产 | 亚洲一区二区三区免费观看 | 国产电影一区二区在线观看 | 欧美福利视频一区 | 欧美中文视频 | 鲁大师一区影视 | 久久精品免费一区二区三 |