日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 防止表单重复提交

發布時間:2025/4/14 php 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 防止表单重复提交 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用戶提交表單時可能因為網速的原因,或者網頁被惡意刷新,致使同一條記錄重復插入到數據庫中,這是一個比較棘手的問題。我們可以從客戶端和服務器端一起著手,設法避免同一表單的重復提交。

1.使用客戶端腳本

[php]?view plaincopy
  • <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>??

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

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

    [php]?view plaincopy
  • <script?language="javascript">??
  • var?submitcount=0;??
  • function?submitOnce?(form){??
  • ????if?(submitcount?==?0){??
  • ?????????submitcount++;??
  • ?????????return?true;??
  • ????}?else{??
  • ????????alert("正在操作,請不要重復提交,謝謝!");??
  • ????????return?false;??
  • ????}??
  • }??
  • </script>??
  • <form?name="the_form"?method="post"?action=""?onSubmit="return?submitOnce(this)">??
  • <input?name="text"?type="text"?id="text"?/>??
  • <input?name="cont"?value="提交"?type="submit">??
  • </form>??



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


    2. 使用session(這個與JSP處理方法是一樣的)

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

    [php]?view plaincopy
  • <?php??
  • session_start();????????????????//根據當前SESSION生成隨機數??
  • $code?=?mt_rand(0,1000000);??
  • $_SESSION['code']?=?$code;??????//將此隨機數暫存入到session??
  • ?>??
  • <form?id="form1"?name="form1"?method="post"?action="t2.php">??
  • ????<p>說明?<input?type="text"?name="titile"?/>??
  • ????????<input?type="hidden"?name="originator"?value="<?php?echo?$code;?>"></p>??
  • ????<p><input?type="submit"?name="Submit"?value="提交"?/></p>??
  • </form>??


  • B頁面:

    [php]?view plaincopy
  • <?php??
  • session_start();??
  • if(isset($_POST['originator']))?{??
  • ????if($_POST['originator']?==?$_SESSION['code']){??
  • ????????echo?"ok";??
  • ????????unset($_SESSION["code"]);???????????????//將其清除掉此時再按F5則無效??
  • ????}else{??
  • ????????echo?"請不要刷新本頁面或重復提交表單";??
  • ????}??
  • }?>??
  • 轉載于:https://www.cnblogs.com/rrsina/p/4683586.html

    總結

    以上是生活随笔為你收集整理的php 防止表单重复提交的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。