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,我会查出来的,谢谢。