防止重复提交表单

防止重复提交表单, 需要从两方面防范:前端和后端

一、前端(防止重复提交表单)

<script type="text/javascript">
    // 防止重复提交表单
    var isCommitted = false;
    function checkPost() {
        if (!isCommitted) {
            isCommitted = true;
            return true;
        }else {
            alert("不能重复提交表单,请等待片刻");
            return false;
        }
    }
</script>

二、后端(防止重复提交表单)

    protected static $form_token_key = "xxxr_pay_form_token";

    public function xxxx() { 

        // ……………………
        // 防止页面重复提交的token
        $form_token = md5(microtime(true));
        session(self::$form_token_key, $form_token);
        $this->assign('form_token', $form_token);
   
    }

    public function do_xxxx() {

         // ………………
  
        // 防止页面重复提交的token
        $form_token = I('post.form_token', '');
        $s_form_token = session(self::$form_token_key);
        session(self::$form_token_key, null);
        if (empty($form_token) || $s_form_token != $form_token) {
            Log::record('重复提交表单', 'DEBUG');
            $this->error('禁止重复提交订单', $success_url, 2);
            exit();
        }

    }
原文地址:https://www.cnblogs.com/wangyuman26/p/6813310.html