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