国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

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

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

  1.使用客戶端JS腳本

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

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

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

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

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

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

  在上例中,如果用戶已經(jīng)單擊“提交”按鈕,該腳本會自動記錄當前的狀態(tài),并將submitcount變量自加

  1,當用戶試圖再次提交時,腳本判斷submitcount變量值非零,提示用戶已經(jīng)提交,從而避免重復提交表單。

  2.使用Cookie處理

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

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

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

  3.使用Session處理

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

  < ?php session_start();//根據(jù)當前SESSION生成隨機數(shù) $code = mt_rand(0,1000000); $_SESSION['code'] = $code; ?>

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

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

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

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

  4.使用header函數(shù)轉(zhuǎn)向

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

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

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

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
php-- 避免表單的重復提交
防止惡意刷新,重復提交表單
PHP防止重復提交表單
PHP防止post重復提交數(shù)據(jù)的簡單例子
十天學會PHP/第八天:Sessions、發(fā)送電子郵件
淺談CSRF攻擊方式
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服