代码

<?php
//实例化一个Redis
$redis = new Redis();
//Redis 连接
$redis->connect('127.0.0.1', 6379);
//获取客户端IP
$key=get_real_ip();
//限制次数访问次数
$limit = 1;
//获取一个key
$check = $redis->exists($key);
//判断key是否存在
if($check){
  //将key中储存的数字值增一。如果key不存在,以0为key的初始值
  $redis->incr($key);
  //返回key所关联的字符串值。如果key不存在,返回nil。
  $count = $redis->get($key);
  //判断周期内的执行次数
  if($count > 1){
    exit('请求太频繁,请稍后再试!');
  }
}else{
  //将key中储存的数字值增一。如果key不存在,以0为key的初始值
  $redis->incr($key);
  //设置生命周期为x秒
  $redis->expire($key,2);
}

//返回key所关联的字符串值。如果key不存在,返回nil。
$count = $redis->get($key);

//获取客户端真实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;
}
?>
最后修改:2020 年 03 月 02 日
如果觉得我的文章对你有用,请随意赞赏