2 php database forms api throttling
我试图将form's提交率限制为每个用户每 120 秒一次。
我正在考虑使用$_SESSION变量,但我不确定这将如何工作,并且可以删除 cookie。我猜想直观的用户只需返回$_SESSION即可解决变量问题。logging out
我现在只是在理论上,所以我没有代码。
我该如何解决我的问题?
编辑 -
用户如此频繁查询的原因是因为它是一个项目和动物寓言数据库。我需要将用户查询速度减慢到可接受的速度,因为超过 10 个查询/分钟的速度,否则应用程序可能会被“禁止”或拒绝大约一个小时。
$_SESSION并且$_COOKIE变量可能被用户删除,因此被他们滥用。您需要将提交存储在服务器上的某个位置。也许与 MySQL 一起。然后在处理表格之前进行检查。
就像是
SELECT COUNT(*) attempts, MAX(submit_time) last
FROM form_submits
WHERE user_id = ?
AND submit_time > NOW - INTERVAL 2 MINUTE
Run Code Online (Sandbox Code Playgroud)
然后
if ($row['attempts'] > 0) {
echo "You must wait " . (time() - strtotime($row['last'])) . " seconds before you can submit this form again.";
return;
}
Run Code Online (Sandbox Code Playgroud)