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来限制用户或者IP某个时间段内访问的次数的更多相关文章
- Redis来限制用户 ------------IP某个时间段内访问的次数
$redis = new Redis(); $redis->connect('127.0.0.1', 6379); //获取客户端真实ip地址 function get_real_ip(){ s ...
- Nginx限制某个IP同一时间段的访问次数
nginx可以通过HttpLimitReqModul和HttpLimitZoneModule配置来限制ip在同一时间段的访问次数. HttpLimitReqModul用来限制连单位时间内连接数的模块, ...
- Nginx限制某个IP同一时间段的访问次数和请求数示例代码
nginx可以通过ngx_http_limit_conn_module和ngx_http_limit_req_module配置来限制ip在同一时间段的访问次数. ngx_http_limit_conn ...
- Nginx中如何限制某个IP同一时间段的访问次数
如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见 ...
- 使用IP在局域网内访问System.Net.HttpListenerException:“拒绝访问。”
记录一下,自己写的程序之前运行没有遇到这个问题,突然遇到这个问题,找了一圈没有找到有效的解决方案,到最后发现,以管理员身份运行程序即可.简单记录一下. 还有就是 .UseUrls("http ...
- Redis限制在规定时间范围内登陆错误次数限制
在博客里之前有过一篇文章是 <PHP结合Redis来限制用户或者IP某个时间段内访问的次数>,这篇文章的思路也是一样的.看下代码吧 //登录错误次数校验 $key = "logi ...
- [项目回顾]基于Redis的在线用户列表解决方案
迁移:基于Redis的在线用户列表解决方案 前言: 由于项目需求,需要在集群环境下实现在线用户列表的功能,并依靠在线列表实现用户单一登陆(同一账户只能一处登陆)功能: 在单机环境下,在线列表的实现方案 ...
- django 实现同一个ip十分钟内只能注册一次(redis版本)
上一篇文章,django 实现同一个ip十分钟内只能注册一次 的时候,我们在注册的时候选择使用的使我们的数据库来报错我们的注册的ip信息,可是如果数据量大,用户多的时候,单单靠我们的数据库 来储存我们 ...
- openresty开发系列38--通过Lua+Redis 实现动态封禁IP
openresty开发系列38--通过Lua+Redis 实现动态封禁IP 一)需求背景为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单.对于黑名单之内的 IP ,拒绝 ...
随机推荐
- 频繁更换ip会影响SEO优化吗?
网站更换ip会不影响SEO的效果,其实网站更换ip是正常的(但不能频繁更换),搜索引擎抓取是根据网站的域名进行的,不是根据ip来抓取你的网站.在短时间内更换IP对SEO的效果并没有很大的影响. 如果是 ...
- scrapy_cookie禁用_延迟下载_自定义爬虫setting
如何设置禁止cookie? 在setting中 添加字段: COOKIE_ENABLED = False # False关闭cookie,True ...
- maven(项目管理工具系列 maven 总结二)
♣maven是什么? ♣maven下载.安装 ♣了解maven仓库 ♣eclipse配置maven ♣创建maven项目 ♣把maven项目转化为web项目 1.maven是什么? Maven是一个项 ...
- 长整形 Unix系统毫秒时间 (long类型) 转换为时间格式
/** * 把毫秒转化成日期 * * @param dateFormat(日期格式,例如:MM/ dd/yyyy HH:mm:ss) * @param millSec(毫秒数) * @return * ...
- awk使用正则精确匹配
[root@localhost home]# cat file 5001][YRSD5-1][YRSD5-1-2][0203008400028411] 010102 5001][YRSD7-1][YR ...
- 【转】globk通常的应用
1.重复性分析(glred) -单独的观测期 -联合的观测期 2.联合多期数据得到基于实验的平均位置 -联合单独观测的测站 3.联合平均位置估计速度或地震偏移和震后运动 卡尔曼滤波 1.等同于序贯最小 ...
- Win7系统下彻底删除无用服务的方法
win7系统下中有非常多的服务项,用户来满足不同行业用户间的所有需求,系统服务也是执行指定系统功能的程序,许多情况下我们想要运行软件或执行外接设备都无法离开系统服务,但并非所有系统服务都是我们用到的, ...
- Sizeof的三种作用
一.计算常量占用的字节数 例如:int num=sizeof(10); printf("%i",num); 二.计算变量占用的字节数 例如:int num2=3; int resu ...
- Sonar 数据库表关系整理一(续)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 简介:Sonar平台是目前较为流行的静态代码扫描平台,为了便于使用以及自己二次开发,有必要对它的数据库结构进行学习 ...
- UVa 1378 A Funny Stone Game [博弈论 SG函数]
A Funny Stone Game 题意: $n \le 23$堆石子,每次选择$i < j \le k$,从$i$拿走1颗$j,k$各放入一颗,不能取就失败.求先手是否必胜以及第一次取的策略 ...