Php 如何限制每个用户的表单提交率
我试图将Php 如何限制每个用户的表单提交率,php,database,forms,api,throttling,Php,Database,Forms,Api,Throttling,我试图将表单的提交速率限制为每120秒一个用户提交一次 我正在考虑使用一个$\u SESSION变量,但我不确定该如何工作,可以直接删除cookie。我猜一个$\u会话变量可以由一个直观的用户通过注销并返回来处理 我现在只是在理论上,所以我没有代码 我该如何解决我的问题 编辑-- 用户经常查询的原因是因为它是一个项目和动物数据库。我需要将用户查询速度降低到可接受的速度,因为超过每分钟10次查询的速度,否则应用程序可能会被“禁止”或拒绝大约一个小时。$\u SESSION和$\u COOKIE变量
表单的提交速率限制为每120秒一个用户提交一次
我正在考虑使用一个$\u SESSION
变量,但我不确定该如何工作,可以直接删除cookie。我猜一个$\u会话
变量可以由一个直观的用户通过注销
并返回来处理
我现在只是在理论上,所以我没有代码
我该如何解决我的问题
编辑--
用户经常查询的原因是因为它是一个项目和动物数据库。我需要将用户查询速度降低到可接受的速度,因为超过每分钟10次查询的速度,否则应用程序可能会被“禁止”或拒绝大约一个小时。$\u SESSION
和$\u COOKIE
变量可能会被用户删除,并因此被滥用。您需要将提交存储在服务器上的某个位置。也许是MySQL。然后在处理表单之前进行检查
差不多
SELECT COUNT(*) attempts, MAX(submit_time) last
FROM form_submits
WHERE user_id = ?
AND submit_time > NOW - INTERVAL 2 MINUTE
然后
$\u会话
和$\u COOKIE
变量可能会被用户删除,因此会被用户滥用。您需要将提交存储在服务器上的某个位置。也许是MySQL。然后在处理表单之前进行检查
差不多
SELECT COUNT(*) attempts, MAX(submit_time) last
FROM form_submits
WHERE user_id = ?
AND submit_time > NOW - INTERVAL 2 MINUTE
然后
在提交时将其IP存储到表中,并在1小时后过期。如果记录数量超过5,则不允许提交表格。嗯,这可能有效。有趣的工作。谢谢分享!一般来说,这个问题没有解决办法。您需要提供更多的上下文,比如用户是否经过身份验证?为什么用户经常提交?为什么这会对你的申请造成问题?(像cookies一样,用户也可以轻松地更改其IP地址)添加信息Hakre,一分钟。在提交时将其IP存储到表中,过期1小时。如果记录数量超过5,则不允许提交表格。嗯,这可能有效。有趣的工作。谢谢分享!一般来说,这个问题没有解决办法。您需要提供更多的上下文,比如用户是否经过身份验证?为什么用户经常提交?为什么这会对你的申请造成问题?(和cookies一样,用户也可以轻松更改其IP地址)添加信息Hakre,一分钟。