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