PHP根据session控制一定时间内form表单提交次数

 

这种写法以及函数的用法是有些奇葩,但是能用就行啦

 

/**
 * 根据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;
    }
}

 

你可能感兴趣的:(PHP)