Redis来限制用户 ------------IP某个时间段内访问的次数
2024-10-09 02:22:00
$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.' 次请求';
最新文章
- JAVA内部类有关
- Visulalize Boost Voronoi in OpenSceneGraph
- Android应用开发中半透明效果实现方案
- LDAP与jenkins
- Linq分组功能
- HDU1013_Digital Roots【大数】【水题】
- JS操作JSON总结(转)
- 使用PowerDesigner创建数据库表图文并茂版
- Lambda表达式的几种使用方式
- [iOS]封装单例类
- lPC1788驱动SDRAM
- plsql本机不安装数据库连接远程数据库
- es6 Module语法
- 剑指Offer_编程题_13
- 什么是servlet?
- laravel 制作购物车流程
- 22.多线程.md
- codeforces 350 div2 C. Cinema map标记
- ngx_lua实现登录逻辑
- RHCSA-考前准备