2

form's送信レートをユーザーごとに 120 秒に 1 つに制限しようとしています。

変数を使用することを考えていました$_SESSIONが、それがどのように機能するかわかりません.Cookieは削除できます. $_SESSION変数は、直観的なユーザーが元に戻すだけで回避できると思いますlogging out

現時点では理論化しているだけなので、コードはありません。

問題を回避するにはどうすればよいですか?

編集 -

ユーザーが頻繁にクエリを実行する理由は、それがアイテムと動物のデータベースであるためです。毎分 10 クエリの割合を超えると、アプリケーションが約 1 時間「禁止」または拒否される可能性があるため、ユーザー クエリを許容可能な速度まで遅くする必要があります。

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 に答える