美文网首页ThinkPHP
Thinkphp5防止某个IP多次登录的方法

Thinkphp5防止某个IP多次登录的方法

作者: Martinby | 来源:发表于2017-04-20 19:03 被阅读433次

    //昨天写的思路不对,重新写....

    /**

    *检查IP是否重复登录多次

    */

    public function check_ip(){

    //获取ip

    $login_ip=$_SERVER["REMOTE_ADDR"];

    $login_time=date("Y-m-d",time());

    if(Cache::get('cache_login_data')==false){

    //如果ip换成为false,那么创建一个缓存,并赋值第一个

    $login_data[0]=['login_ip'=>$login_ip,'login_time'=>$login_time];

    Cache::set('cache_login_data',$login_data);

    }else{

    //如果有cache,那么将这条数据加入到缓存中最后一条去

    $cache_login_data=Cache::get('cache_login_data');

    $count=0;

    foreach($cache_login_dataas$k=>$v){

    //如果当前缓存中的值含有当前ip和时间,那么计算当前时间内登录次数

    if($v['login_time']==$login_time&&$v['login_ip']==$login_ip){

    $count++;

    if($count>10){

    //当前ip登录超过10次

    $this->error("你登录超过了10次,请不要再来登了...","Login/index");

    }else{

    //当前时间内有该IP登陆过,但是没有超过10次

    $cache_login_data[count($cache_login_data)+1]=['login_ip'=>$login_ip,'login_time'=>$login_time];

    Cache::set('cache_login_data',$cache_login_data);

    }

    }else{

    //当前时间内,该IP没有登陆过

    $cache_login_data[count($cache_login_data)+1]=['login_ip'=>$login_ip,'login_time'=>$login_time];

    Cache::set('cache_login_data',$cache_login_data);

    }

    }

    }

    }

    相关文章

      网友评论

        本文标题:Thinkphp5防止某个IP多次登录的方法

        本文链接:https://www.haomeiwen.com/subject/btxxzttx.html