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

 

發佈了32 篇原創文章 · 獲贊 44 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章