这种写法以及函数的用法是有些奇葩,但是能用就行啦
/**
* 根据session控制form表单一定时间内提交次数
*
* @date 2020-01-17
* @return boolean
*/
public function submit_nu() {
// 获取客户端ip
$ip = 'ip'.ip_2_long(request()->ip());
// 获取当前时间戳
$now = time();
// 开始循环判断
if (! empty(request()->session()->get($ip))) {
// 两分钟间隔内
$last_submit_time = request()->session()->get($ip.'.last_submit_time');
$submit_times = request()->session()->get($ip.'.submit_times');
if ($now - $last_submit_time < 60 * 2) {
// 判断两分钟内的次数 3次
if ($submit_times && $submit_times >= 3) {
return false;
}
else {
// 小于3次
if ($submit_times) {
session([$ip.'.submit_times'=>$submit_times+1]);
}
return true;
}
}
else {
// 两分钟间隔外
session([$ip.'.last_submit_time'=>$now]);
session([$ip.'.submit_times'=>1]);
return true;
}
}
else {
// 第一次
session([$ip.'.last_submit_time'=>$now]);
session([$ip.'.submit_times'=>1]);
return true;
}
}
来源:CSDN
作者:Charles Wong
链接:https://blog.csdn.net/qq_34248133/article/details/104221705