防止重复提交表单

时间:2021-03-21 16:44:28

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

 

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

<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();
}

}