$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.' 次请求';
PHP结合Redis来限制用户或者IP某个时间段内访问的次数
最新推荐文章于 2020-12-11 16:53:48 发布
本文介绍了一种利用PHP和Redis实现对客户端IP访问次数进行限制的方法。通过获取客户端的真实IP地址并将其作为Redis的键名,记录和跟踪每个IP的访问次数。当访问次数达到设定的阈值时,系统会阻止进一步的请求。
173万+

被折叠的 条评论
为什么被折叠?



