• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP实现redis限制单ip、单用户的访问次数功能示例

    本文实例讲述了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程序设计有所帮助。

    您可能感兴趣的文章:
    • php 使用redis锁限制并发访问类示例
    • 在Redis数据库中实现分布式速率限制的方法
    • Redis实战记录之限制操作频率
    上一篇:PHP基于rabbitmq操作类的生产者和消费者功能示例
    下一篇:PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP实现redis限制单ip、单用户的访问次数功能示例 PHP,实现,redis,限,制单,单用户,