Php 如何创建一种临时阻止IP多次访问表单的方法?

Php 如何创建一种临时阻止IP多次访问表单的方法?,php,forms,access-control,Php,Forms,Access Control,我正在寻找临时阻止ip多次访问我的站点/表单上的网页的想法/方法 限制应该是,一天内网页/表单的访问次数不超过5次,否则它应该显示一条简单的文本消息,如“来自ip的请求太多,请稍后再试,如果您觉得这是错误的,请与我们联系” 我希望通过PHP做一些简单的事情,但我对任何事情都持开放态度。我真的不知道如何使用数据库和cookie,但我确信我能读懂它。我会用时间戳和提交次数设置cookie,并对照当前时间检查时间戳 Cookie是可以清除的,所以您可能希望通过在mysql数据库中存储IP和时间戳来对其

我正在寻找临时阻止ip多次访问我的站点/表单上的网页的想法/方法

限制应该是,一天内网页/表单的访问次数不超过5次,否则它应该显示一条简单的文本消息,如“来自ip的请求太多,请稍后再试,如果您觉得这是错误的,请与我们联系”


我希望通过PHP做一些简单的事情,但我对任何事情都持开放态度。我真的不知道如何使用数据库和cookie,但我确信我能读懂它。

我会用时间戳和提交次数设置cookie,并对照当前时间检查时间戳


Cookie是可以清除的,所以您可能希望通过在mysql数据库中存储IP和时间戳来对其进行备份。访问时,根据当前提交的时间和数量检查数据库中的ip。

简单快速的解决方案:

  • 创建表
    id、url、用户ip、请求号、日期
  • 按url、日期、用户ip和大于5的请求号签入数据库,并阻止或不阻止此请求。 如果不使用
    插入。。。重复密钥更新请求\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,如果有帮助的话,它相对简单。您保护表单不被机器人程序发布吗?这是另一个问题,添加验证码