zoukankan      html  css  js  c++  java
  • PHP结合Redis来限制用户或者IP某个时间段内访问的次数

    $redis = new Redis();    
    $redis->connect('127.0.0.1', 6379);   
    
    //获取客户端真实ip地址  
    function get_real_ip(){  
        static $realip;  
        if(isset($_SERVER)){  
            if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){  
                $realip=$_SERVER['HTTP_X_FORWARDED_FOR'];  
            }else if(isset($_SERVER['HTTP_CLIENT_IP'])){  
                $realip=$_SERVER['HTTP_CLIENT_IP'];  
            }else{  
                $realip=$_SERVER['REMOTE_ADDR'];  
            }  
        }else{  
            if(getenv('HTTP_X_FORWARDED_FOR')){  
                $realip=getenv('HTTP_X_FORWARDED_FOR');  
            }else if(getenv('HTTP_CLIENT_IP')){  
                $realip=getenv('HTTP_CLIENT_IP');  
            }else{  
                $realip=getenv('REMOTE_ADDR');  
            }  
        }  
        return $realip;  
    }  
    
    //这个key记录该ip的访问次数 也可改成用户id   
    $key = get_client_ip();  //该Key记录访问的次数,目前是以IP为例,也可以把用户id作为key,如userid_123456
      
    //限制次数为3次。  
    $limit = 3;  
      
    $check = $redis->exists($key);  
    if($check){  
        $redis->incr($key);  
        $count = $redis->get($key);  
        if($count > 3){  
            exit('已经超出了限制次数');  
        }  
    }else{  
        $redis->incr($key);  
        //限制时间为60秒   
        $redis->expire($key,60);  
    }  
      
    $count = $redis->get($key);  
    echo '第 '.$count.' 次请求';
  • 相关阅读:
    移动端事件
    移动端的三种布局
    bootstrap自定义——栅格列数修改
    less文件的运行
    lessc的安装
    nodejs的安装
    jquery插件之jquery-ui
    指定网卡进行ping操作
    汇编语言从入门到精通-4标识符和表达式
    汇编语言从入门到精通-3操作数的寻址方式
  • 原文地址:https://www.cnblogs.com/yszr/p/10426949.html
Copyright © 2011-2022 走看看