這種寫法以及函數的用法是有些奇葩,但是能用就行啦
/**
* 根據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;
}
}