本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《php+redis数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

php redis ip查找,PHP实现redis限制单ip、单用户的访问次数功能示例相关推荐

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

    本文实例讲述了PHP实现redis限制单ip.单用户的访问次数功能.分享给大家供大家参考,具体如下: 有时候我们需要限制一个api或页面访问的频率,例如单ip或单用户一分钟之内只能访问多少次 类似于这 ...

  2. PHP实现redis限制单ip、单用户的访问次数功能

    本文实例讲述了PHP实现redis限制单ip.单用户的访问次数功能.分享给大家供大家参考,具体如下: 有时候我们需要限制一个api或页面访问的频率,例如单ip或单用户一分钟之内只能访问多少次 类似于这 ...

  3. php实现多条件查找分页,Yii2.0框架实现带分页的多条件搜索功能示例

    本文实例讲述了Yii2.0框架实现带分页的多条件搜索功能.分享给大家供大家参考,具体如下: 方法一 在控制器中 public function actionShow(){ $where['title' ...

  4. 【Redis】新浪微博与微信Redis架构实战 - 笔记

    1.Redis核心数据结构精讲 使用redis-cli进入Redis交互 如果出现:(error) NOAUTH Authentication required.,使用auth 密码登录即可 在Spr ...

  5. php限制接口访问次数_令牌桶限流思路分享(PHP+Redis实现机制)

    一 .场景描述 在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制.比如对于某个 用户,他在一个时间段(interval ...

  6. java 统计阅读量_使用redis实现【统计文章阅读量】及【最热文章】功能

    1.视图函数 # 不需要登录装饰器,匿名用户也可访问 def article_detail(request, id, slug): # print(slug,id) article = get_obj ...

  7. redis用于php购物,PHP+redis实现的购物车单例类示例

    本文实例讲述了PHP+redis实现的购物车单例类.分享给大家供大家参考,具体如下: redis=new Redis(); $this->redis->connect('127.0.0.1 ...

  8. php redis ip查找,php+redis实现ip白名单并提供可配置ip页面

    ip白名单或者黑名单,目的是为了达到一种受限访问,希望在名单内用户可以访问,就把名单叫白名单:希望在名单内用户拒绝访问,就是黑名单.无论我们希望使用哪种名单方式,实现方式都一样. 在nginx下我们通 ...

  9. windows Redis绑定ip无效,Redis设置密码无效,Windows Redis 配置不生效, Windows Redis requirepass不生效...

    windows Redis绑定ip无效,Redis设置密码无效,Windows Redis 配置不生效, Windows Redis requirepass不生效 >>>>&g ...

最新文章

  1. 探讨UnsupportedOperationException的原因及解决方案
  2. SAP 对HU做转库操作,系统报错 - 系统状态HUAS是活动的 - 分析
  3. 《数字视频和高清:算法和接口》一第1章 光 栅 图 像
  4. 再迎利好,“预共识”或能助力BCH“零确认”安全可靠
  5. 多窗体、窗体传值、打开唯一窗体操作
  6. ITK:将内核应用于图像中的每个像素
  7. shiro学习(21):动态添加验证规则1
  8. Codeforces Round #224 (Div. 2): C. Arithmetic Progression(模拟)
  9. shell 之while两种写法
  10. WIFI中的关键词,频率,频段,频宽,频带...你晕了没??.
  11. C++ 中的线程库和 lamber 表达式
  12. SpringBoot - Lombok的使用
  13. IT架构师_隽语集(Design Thinking _0201)
  14. 【问题解决】springboot启动后一小会就自动停止,提示Process finished with exit code 0
  15. 一期Go群问答-并发控制-数据竞争-错误与异常
  16. Java成员方法与静态方法的详解
  17. Python爬虫 - 获取网页编码
  18. 理解Linux中的进程状态
  19. 苹果手机软件升级密码_苹果app应用制作多少钱_广腾(深圳)互联网科技有限公司...
  20. python多媒体应用:使用python和win32gui一步步教你按需截图和图片文字识别

热门文章

  1. Vscode之运行更新出错
  2. Vlc之vs2010版本的配置
  3. 人脸方向学习(九):Face Detection-MTCNN解读
  4. 深度学习掩膜_学习资源 | NOAA连接AI与环境科学(九)—海洋环境视频和图像分析教程...
  5. java 常用的五大包
  6. 小程序二维码需要发布正式版后才能获取到_IOS14.3正式版发布时间12月15日:苹果ios14.3正式版内容一览[多图]-游戏产业...
  7. java json data_java中json数据格式的处理
  8. 根据用指定的月份,打印该月所属的季节(if else)3,4,5 春季 6,7,8 为夏季 9,10,11 秋季 12,1,2为冬季(switch 与 if(){}else{})两种写法
  9. c语言libjpeg处理图像,解决使用 libjpeg 保存图片时因磁盘写入失败导致程序退出的有关问题...
  10. mysql能管理多大的硬盘,Mysql----查看数据库,表占用磁盘大小