200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > php限制ip访问次数 并发_PHP实现redis限制单ip 单用户的访问次数功能示例

php限制ip访问次数 并发_PHP实现redis限制单ip 单用户的访问次数功能示例

时间:2021-04-06 22:19:38

相关推荐

php限制ip访问次数 并发_PHP实现redis限制单ip 单用户的访问次数功能示例

本文实例讲述了PHP实现redis限制单ip、单用户的访问次数功能。分享给大家供大家参考,具体如下:

有时候我们需要限制一个api或页面访问的频率,例如单ip或单用户一分钟之内只能访问多少次

类似于这样的需求很容易用Redis来实现

$redis = new Redis();

$redis->connect('127.0.0.1', 6379);

$redis->auth("php001");

//这个key记录该ip的访问次数 也可改成用户id

//$key = 'userid_11100';

$key=get_real_ip();

//限制次数为5

$limit = 5;

$check = $redis->exists($key);

if($check){

$redis->incr($key);

$count = $redis->get($key);

if($count > 5){

exit('请求太频繁,请稍后再试!');

}

}else{

$redis->incr($key);

//限制时间为60秒

$redis->expire($key,60);

}

$count = $redis->get($key);

echo '第 '.$count.' 次请求';

//获取客户端真实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;

}

?>

希望本文所述对大家PHP程序设计有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。