-1

フォーラムにコメントセクションを追加しています。キャプチャと一緒にスパムを送信するのを防ぐために、30秒程度の遅延を追加したいと思います。

これを行うための最良の方法は何ですか?私が考えることができる唯一の方法は、クッキーを使用することです、他の提案はありますか?

4

4 に答える 4

1

PHP セッションを使用してこのようなことを行うこともできますが、それがどれほど「馬鹿げた」証拠であるかはわかりません。

アイデアは何かをすることです:

if(isset($_POST['cmdComment'])){
  $_SESSION['comment_posted'] = time();
}

checkTime()次に、現在の時間からセッション値を差し引くためにそこに入れることができる関数を言うことができます。差が>= 30数秒の場合は、投稿を続行して$_SESSION['comment_posted']を新しい時刻に設定します。それ以外の場合は、投稿リクエストを無視します。

于 2012-08-03T12:34:02.343 に答える
0

フォーラムには通常メンバーがいますが、少なくともメンバーがいない人は誰も知りません。

ここで、コメントを投稿する場合は、ID、POST_ID、USER_ID、MESSAGE、POST_DATETIMEを使用してCommentのようなテーブルにコメントを配置すると想定します。

少なくともそれは私がそれをする方法です。

これで、ユーザーが特定の投稿に最後にコメントした日時がわかりました。これで、彼または彼女が再度コメントできるかどうかをデータベースに照会できます。

于 2012-08-03T12:37:50.273 に答える
0

ユーザーがコメントを投稿したら、セッションに現在のタイムスタンプを書き込み、さらに30秒追加します。

$_SESSION['postedTime'] = time() + 30;

30秒が経過したかどうかを確認する場合は、現在のタイムスタンプを取得して比較します。現在のタイムスタンプがセッションのタイムスタンプよりも大きい場合は、30秒が経過します。

$timestamp = time();
if($timestamp > $_SESSION['postedTime'])
{
    // allow posting
}
else
{
    // decline
}

セキュリティを強化するために、ユーザーのIP+投稿タイムスタンプをデータベースに挿入できます。

于 2012-08-03T12:38:37.200 に答える
0
  1. コメントがデータベースに挿入されたら、必ずユーザーとタイムスタンプを追跡してください。
  2. ユーザーが再度投稿するときは、最後に投稿したコメントが 30 秒前かどうかを確認します。
  3. それに応じて対処する
于 2012-08-03T12:36:36.340 に答える