Home >Backend Development >PHP Tutorial >PHP combines with Redis to limit the number of visits by users or IPs within a certain period of time

PHP combines with Redis to limit the number of visits by users or IPs within a certain period of time

不言
不言Original
2018-04-20 15:08:322675browse

The content of this article is about PHP combined with Redis to limit the number of visits by users or IPs within a certain period of time. It has a certain reference value. Now I share it with everyone. Friends in need can refer to it

$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.' 次请求';

Related recommendations:

php operation using redis common method codes and examples

php-redis session operation

The above is the detailed content of PHP combines with Redis to limit the number of visits by users or IPs within a certain period of time. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:php file download renameNext article:php file download rename