萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> 真正解決表單重復提交問題php代碼

真正解決表單重復提交問題php代碼

   以前用的js表單防止重復提交方法

 代碼如下  

<script type="text/javascript">
var checkSubmitFlg = false;
function checkSubmit() {
 if (!checkSubmitFlg) {

// 第一次提交
  checkSubmitFlg = true;
  return true;
 } else {

//重復提交
  alert("Submit again!");
  return false;
 }
}
</script>

//以下三種方式分別調用

<form onsubmit="return checkSubmit();">

<input type="submit" onclick="return checkSubmit();" />

<input type="button" onclick="document.forms[0].action='./test';document.forms[0].submit();return checkSubmit();" />

  這樣如果我直接做一個表單,然後提交給/test,上面代理就是一個擺設了,那我們要如何解決此問題

  如果您已經知道如何解決的話那麼這篇文章可能不適合你的口味,paperen這裡也打算從基礎開始討論,所以希望一步看到解決方案的您也可能不太適合,所以請注意。So~開始吧 ~

  paperen想您一定知道表單是什麼吧,form元素就是表單,一般網頁需要輸入的地方必定使用了表單元素,也很常見,一般的代碼如下:

 代碼如下  

    <form
    
    method="post">
    <p>
    <label for="test">隨便輸入點什麼www.45it.com</label>
    <input type="text" name="data" id="test" />
    </p>
    <p>
    <input type="submit" value="提交" name="submit" />
    </p>
    </ul>
    </form>

  重點其實是form與input元素,p元素只是paperen私自加上去的,對後續的說明沒有任何影響,其實很簡單,所謂input就是輸入了,你可以完全將input 元素理解為是用作用戶輸入,只是某些屬性的(type)不能作為輸入而已(這裡就是submit),而form元素你完全可以將它理解為是一個袋子,將所有用戶輸入數據到裝在它裡面之後用 來提交回服務端處理,但對於form元素值得注意的是method屬性,一般來說有get與post兩種方法,其實不要想得太復雜(因為深入的不需要太理解,對於後續的內容沒有太多關系,如 有興趣不妨可以使用浏覽器的調試工具查看請求頭部信息與發送信息,例如firebug),表現出來就是,使用get提交表單的話所有的input元素的值將會在地址欄處出現,而post則不會, 例如使用get提交此表單後的浏覽器地址欄

 代碼如下  

http://localhost/mytest/token/form.php?data=test&submit=%E6%8F%90%E4%BA%A4

  post則在 地址欄看不到了,使用fiebug可以看到如下信息

真正解決表單重復提交問題php代碼 三聯

  可以簡單認為get是顯式傳送數據的,而 post則是隱式傳送數據的,但還有一個很大區別的是post支持更多更大的數據傳送。

  Next,當表單代碼寫好了,那麼讓我們來進行服務器腳本的編寫(這裡就是PHP)。很簡單 ~

 代碼如下   <?php
    if ( isset( $_POST['submit'] ) ) {
    //表單提交處理
copyright © 萬盛學電腦網 all rights reserved