thinkphp 解決頁面刷新表單重複提交的問題

  1. 控制器中

    session_start();
    $code =mt_rand(0,1000000);
    $_SESSION['code'] = $code;
    $this->assign('code',$code);

    注:該段代碼應在表單提交判斷的後面

    往html中傳一個session隨機數,並把該隨機數用隱藏input框的形式傳值

  2. html頁面中

    <input type="hidden" name="hiddenCode" value="<{$code}>">
  3. 在表單提交後的做判斷,若input值與session中的值相等,則可繼續提交,否則不執行提交表單

    session_start();
            if(isset($data['hiddenCode'])){
              if($data['hiddenCode'] == $_SESSION['code']){
                unset($data['hiddenCode']);
                //提交操作
              }
            }
  4. 完整代碼:

       public function test(){
            $data = I('post.');
            if($data != null){
              $this->addSubmitform($data);
            }
            session_start();
            $code = mt_rand(0,1000000);
            $_SESSION['code'] = $code;
            $this->assign('code',$code);
            $this->display('.html');
        }
        public function addSubmitform($data){
            session_start();
            if(isset($data['hiddenCode'])){
              if($data['hiddenCode'] == $_SESSION['code']){
                unset($data['hiddenCode']);
                $res1 = M('tableName')->add($data);
                if ($res1 == '') {
                  //上傳失敗
                  return false;
                }
              }
            }
        }
        <form class="ticket-form" action="" method="post">
           Landing Page<input class="form-input page" type="text" name="page"/>
           <input type="hidden" name="hiddenCode" value="<{$code}>">
           <input  type="submit" value="Submit"  >
        </form>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章