Rumah >pembangunan bahagian belakang >tutorial php >PHP结合Redis来限制用户或者IP某个时间段内访问的次数

PHP结合Redis来限制用户或者IP某个时间段内访问的次数

不言
不言asal
2018-04-20 15:08:322653semak imbas

这篇文章介绍的内容是关于PHP结合Redis来限制用户或者IP某个时间段内访问的次数 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

$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常用方法代码和例子大全

php-redis 的session操作

Atas ialah kandungan terperinci PHP结合Redis来限制用户或者IP某个时间段内访问的次数. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:php文件下载 重命名Artikel seterusnya:php打印回溯