防止重复提交表单, 需要从两方面防范:前端和后端
一、前端(防止重复提交表单)
<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(); } }