时间:2021-05-26
本文实例讲述了PHP实现redis限制单ip、单用户的访问次数功能。分享给大家供大家参考,具体如下:
有时候我们需要限制一个api或页面访问的频率,例如单ip或单用户一分钟之内只能访问多少次
类似于这样的需求很容易用Redis来实现
<?php$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相关内容感兴趣的读者可查看本站专题:《php+redis数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了PHP实现限制IP访问及提交次数的方法。分享给大家供大家参考,具体如下:一、原理提交次数是肯定要往数据库里写次数这个数据的,比如用户登陆,当用户出
分群①自然搜索用户②活动用户③渠道用户2.注册用户分群①新增注册用户②累计注册用户③累计注册用户转化率3.下单用户分群①下单用户数②下单用户转化率4.重复购买用
用PHP实现简单的用户登录界面,供大家参考,具体内容如下首先要实现用户登录界面需要一个html登录表单用户名:密码:重复密码:然后开始按照流程图写PHP代码再P
本文介绍了php使用redis锁限制并发访问类,并详细的介绍了并发访问限制方法。1.并发访问限制问题对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多
本文实例讲述了PHP操作redis实现的分页列表,新增,删除功能封装类与用法。分享给大家供大家参考,具体如下:_redis_ip=$ip;if($port!='