フォーラムにコメントセクションを追加しています。キャプチャと一緒にスパムを送信するのを防ぐために、30秒程度の遅延を追加したいと思います。
これを行うための最良の方法は何ですか?私が考えることができる唯一の方法は、クッキーを使用することです、他の提案はありますか?
PHP セッションを使用してこのようなことを行うこともできますが、それがどれほど「馬鹿げた」証拠であるかはわかりません。
アイデアは何かをすることです:
if(isset($_POST['cmdComment'])){
$_SESSION['comment_posted'] = time();
}
checkTime()
次に、現在の時間からセッション値を差し引くためにそこに入れることができる関数を言うことができます。差が>= 30
数秒の場合は、投稿を続行して$_SESSION['comment_posted']
を新しい時刻に設定します。それ以外の場合は、投稿リクエストを無視します。
フォーラムには通常メンバーがいますが、少なくともメンバーがいない人は誰も知りません。
ここで、コメントを投稿する場合は、ID、POST_ID、USER_ID、MESSAGE、POST_DATETIMEを使用してCommentのようなテーブルにコメントを配置すると想定します。
少なくともそれは私がそれをする方法です。
これで、ユーザーが特定の投稿に最後にコメントした日時がわかりました。これで、彼または彼女が再度コメントできるかどうかをデータベースに照会できます。
ユーザーがコメントを投稿したら、セッションに現在のタイムスタンプを書き込み、さらに30秒追加します。
$_SESSION['postedTime'] = time() + 30;
30秒が経過したかどうかを確認する場合は、現在のタイムスタンプを取得して比較します。現在のタイムスタンプがセッションのタイムスタンプよりも大きい場合は、30秒が経過します。
$timestamp = time();
if($timestamp > $_SESSION['postedTime'])
{
// allow posting
}
else
{
// decline
}
セキュリティを強化するために、ユーザーのIP+投稿タイムスタンプをデータベースに挿入できます。