Php 如何创建一种临时阻止IP多次访问表单的方法?
我正在寻找临时阻止ip多次访问我的站点/表单上的网页的想法/方法 限制应该是,一天内网页/表单的访问次数不超过5次,否则它应该显示一条简单的文本消息,如“来自ip的请求太多,请稍后再试,如果您觉得这是错误的,请与我们联系”Php 如何创建一种临时阻止IP多次访问表单的方法?,php,forms,access-control,Php,Forms,Access Control,我正在寻找临时阻止ip多次访问我的站点/表单上的网页的想法/方法 限制应该是,一天内网页/表单的访问次数不超过5次,否则它应该显示一条简单的文本消息,如“来自ip的请求太多,请稍后再试,如果您觉得这是错误的,请与我们联系” 我希望通过PHP做一些简单的事情,但我对任何事情都持开放态度。我真的不知道如何使用数据库和cookie,但我确信我能读懂它。我会用时间戳和提交次数设置cookie,并对照当前时间检查时间戳 Cookie是可以清除的,所以您可能希望通过在mysql数据库中存储IP和时间戳来对其
我希望通过PHP做一些简单的事情,但我对任何事情都持开放态度。我真的不知道如何使用数据库和cookie,但我确信我能读懂它。我会用时间戳和提交次数设置cookie,并对照当前时间检查时间戳
Cookie是可以清除的,所以您可能希望通过在mysql数据库中存储IP和时间戳来对其进行备份。访问时,根据当前提交的时间和数量检查数据库中的ip。简单快速的解决方案:
id、url、用户ip、请求号、日期
插入。。。重复密钥更新请求\u编号=请求\u编号+1
也可以在web服务器端使用阻塞。例如,nginx允许添加ip以进行动态拒绝 使用包含两列IPAddress和Date的表 仔细检查一下
SELECT COUNT(\*) c FROM table WHERE ipaddress = 'ipaddress' AND ipdate = 'date("Y-m-d")'
if c greater then 4,
<\? die("your message"); ?>
else
insert into table VALUES ('ipadress', 'date(Y-m-d)');
从表中选择COUNT(\*)c,其中ipaddress='ipaddress'和ipdate='date(“Y-m-d”)'
如果c大于4,
其他的
在表中插入值('iPAddress','date(Y-m-d)';
您使用的是什么形式的持久性?你需要在服务器端存储从页面加载到页面加载的一些状态(Cookie并不能真正解决问题-一个清晰的缓存会让用户马上返回)。你可以,这很容易找到,不是每个人都可以使用,也不是真的实现了很多,那么你实际试图解决的问题是什么呢?啊,我没有真正使用任何东西。这是真的,但它可能会阻止简单的机器人吗?使用robots.txt文件来阻止好的机器人,没有可靠的方法来阻止不好的机器人,这是www的本质。啊,好吧,听起来不错。我该怎么做,设置cookies并在mysql数据库中输入数据(对不起,我对它很陌生)?“我的表单”的方法是POST,如果有帮助的话,它相对简单。您保护表单不被机器人程序发布吗?这是另一个问题,添加验证码