2

我试图将form's提交率限制为每个用户每 120 秒提交一次。

我正在考虑使用一个$_SESSION变量,但我不确定它是如何工作的,并且可以删除 cookie。我想一个$_SESSION变量可以由一个直观的用户来解决logging out

我现在只是在理论上,所以我没有代码。

如何解决我的问题?

编辑 -

用户经常查询的原因是因为它是一个项目和动物数据库。我需要将用户查询速度减慢到可接受的速度,因为超过 10 个查询/分钟的速度,否则应用程序可能会被“禁止”或拒绝大约一个小时。

4

1 回答 1

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;
}
于 2013-05-04T21:47:22.207 回答