例えば。登録フォームは x 回しか使用できませんか?
5 に答える
PHP のクイック アンド ダーティー ソリューション。
ユーザーがページにアクセスするたびに、カウンターがインクリメントされます。回数が多すぎると、ページdie()
s を意味します。このコードを、誰かがフォームを送信したときにのみ実行される場所に配置することを選択できます。
カウントを頻繁にリセットします。
既知のバグ: Cookie をクリアすると問題が発生し、Cookie をオフにすると問題が発生します。
<?php
session_start();
if(!isset($_SESSION['count']))
{
$_SESSION['count'] = 1;
$_SESSION['first'] = time();
}
else
{
// Increase the Count
$_SESSION['count']++;
// Reset every so often
if($_SESSION['first'] < (time() - 500))
{
$_SESSION['count'] = 1;
$_SESSION['first'] = time();
}
// Die if they have viewed the page too many times
if($_SESSION['count'] > 100)
{
die("You have submitted to many times");
}
}
これは、ユーザーごとのソリューションが必要な場合です。それがサイト全体のことなら、コメントしてください。削除します。
使用されたx回とは、実際に送信されたx回を意味すると思います。フォームが送信されるたびに増分し、検証に合格せず、制限に達したときにそれ以上送信が試行されないようにするセッションカウンターを作成できます。
はい。フォーム処理ページが使用された回数をデータベースに記録し、x回の使用が記録されたときにフォームを無効にします。
ajax 経由でフォームを送信する場合、これは非常に優れたリソースです。
残念ながら、ここには確実な方法はありません。最善の方法は Cookie を保存することですが、明らかに Cookie を消去できます。IPアドレスをユーザーエージェント(ブラウザなど)と組み合わせ(md5)、それをデータベースに保存することで、ある種の別の一意の文字列/ IDを作成してみてください。拒否された。