Php 检查用户是否在不到两分钟的时间内上传了超过50个文件

Php 检查用户是否在不到两分钟的时间内上传了超过50个文件,php,mysql,Php,Mysql,所以我有一个图像上传程序,我想创建一个最小的机器人保护。 我的表结构如下所示: | ID | uploader_ip | image_name | image_url_id | date ------------------------------------------------------ | 1 | 127.0.0.1 | bla.jpg | fsdJGf | UNIX Timestamp (UPDATE ON: Create) select count(*)

所以我有一个图像上传程序,我想创建一个最小的机器人保护。 我的表结构如下所示:

| ID | uploader_ip | image_name | image_url_id | date
------------------------------------------------------
| 1  | 127.0.0.1   | bla.jpg    | fsdJGf       | UNIX Timestamp  (UPDATE ON: Create)
select count(*) from your_table where uploader_ip="<some ip>" and date > (now() - interval 2 minute) group by uploader_ip;
我想检查是否有超过或正好50个图像/行是在不到或正好两分钟内创建的

我怎样才能做到这一点呢?

这是问题所在

Select count(*) from table 
where 
table.date >  now() - interval 2 minute
-- or the function date_sub(now(), interval 2 minute)
and id = 1
如果希望在2分钟内上载所有用户id:

select id, 
  (select count(*) 
    from table 
    where id = t.id 
    and date > t.date - interval 1 minute 
    and date < t.date + interval 1 minute
  ) as total
from table t
where total >= 50

您需要构造一个包含count和group的查询,并在date列上放置一个范围。如果仅在最近两分钟内执行此操作,则查询将如下所示:

| ID | uploader_ip | image_name | image_url_id | date
------------------------------------------------------
| 1  | 127.0.0.1   | bla.jpg    | fsdJGf       | UNIX Timestamp  (UPDATE ON: Create)
select count(*) from your_table where uploader_ip="<some ip>" and date > (now() - interval 2 minute) group by uploader_ip;

你应该读一下。此外,您还可以从ip=?按日期订购描述限制20,1,然后对照当前日期检查该日期。在时钟上的两分钟内?或者,两次上传间隔两分钟?这是一个重要的区别,使这成为一个容易的问题,或是一个非常困难的问题。对于这个难题,请看:@Brad Good point,我的意思是,如果两分钟内创建了50行或更多行,那么它将检查每个人的日期,如果这些日期间隔为2分钟,则获取它。@JonyKale在这种情况下,请查看我发送给您的链接。你的问题完全一样,只是时间间隔不同。@brad Delegate,我会查出来的,谢谢。