全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 5326|回复: 19
打印 上一主题 下一主题

php怎么限制某个ip或ip段过多的请求

[复制链接]
跳转到指定楼层
1#
发表于 2015-3-10 18:30:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
100金钱

如题

如果某个ip或ip段,一分钟内,请求了100次,那就暂时限制它,限制1小时,2小时之类的

(限制的方法,最好可以自己指定,比如想让它在限制时间内显示404)



求大牛帮写个具体的php实现代码,拜谢!

2#
发表于 2015-3-10 18:32:52 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
3#
发表于 2015-3-10 18:35:59 | 只看该作者
本帖最后由 小夜 于 2015-3-10 18:37 编辑

想不出办法,如果说用PHP判断,那么首先就要先执行一遍PHP。

还要记录数据库里面,每个IP,请求了多少次。然后,他下次连接的时候,还要再执行PHP,判断是不是在库里,在库里就404;算限制了,下次连接,还是要执行PHP,入库查询,判断……感觉死循环了。

建议还是直接上个软件或硬件防火墙解决吧,在连接时就解决。

像nginx就有类似功能,限制连接数量。或者,用iptables来限制单个IP的连接数量。
4#
发表于 2015-3-10 18:43:36 | 只看该作者
litespeed 好像有这个功能 控制 每个 IP 的访问 间隔 目测可以防 采集 不过 个人流量太少 没测试过 具体怎么样 不清楚
5#
发表于 2015-3-10 18:44:17 | 只看该作者
你要防 CC 么??
6#
发表于 2015-3-10 18:48:48 | 只看该作者
数字加速云有这功能,频繁请求需要输入验证码
7#
发表于 2015-3-10 20:00:06 | 只看该作者
可以在访问的时候设置session,用session来做可以。代码网上有。
8#
发表于 2015-3-10 20:04:21 | 只看该作者
<?  
//禁止某个IP
$banned_ip = array (
"127.0.0.1",
//"119.6.20.66",
"192.168.1.4"
);
if ( in_array( getenv("REMOTE_ADDR"), $banned_ip ) )
{
die ("您的IP禁止访问!");
}
//禁止某个IP段
$ban_range_low=ip2long("119.6.20.65");
$ban_range_up=ip2long("119.6.20.67");
$ip=ip2long($_SERVER["REMOTE_ADDR"]);
if ($ip>$ban_range_low && $ip<$ban_range_up)
{
echo "您的IP在被禁止的IP段之中,禁止访问!";
exit();
}
?>

评分

参与人数 1威望 +25 收起 理由
cnx + 25 很给力!

查看全部评分

9#
 楼主| 发表于 2015-3-10 20:12:59 | 只看该作者
opelnic 发表于 2015-3-10 20:00
可以在访问的时候设置session,用session来做可以。代码网上有。

大牛,搜不出来啊。。
10#
发表于 2015-3-10 20:40:43 | 只看该作者
muyang 发表于 2015-3-10 20:12
大牛,搜不出来啊。。

晚点我回你把,家里电脑有这个东西。不过是以前PHP 5.2的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-20 16:27 , Processed in 0.068160 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表