2011-12-29 13 views
1

リクエストオプションの少ないサイトがあります(写真の追加、コメントの追加など)。私は彼が時間内に5件の以上のコメントを投稿することができません例えば、彼は私の考えを作るためにPHPの1時間あたりのユーザーのコメント/リクエストを制限する方法

たなど時間あたり5枚の以上の写真を追加することはできません、一定時間あたりの使用によって行われた要求の制限したいです/更新セッション変数は、フォームアクションが送信されるたびに、最大5を合計します(そして、セッションvar == 5の場合、すべてのフォームでアクションを拒否します)。私の考えは私の心の中では良いようですが、私はちょうどそれがinitationから1時間の特定のセッション変数をリセットする方法を見つけることができません)。任意のアイデア

答えて

3

簡単なSQLを使用してSQLからそれを実行します(ユーザーが、それはセッションのリセットすると死んでしまう)過去時間で行われた項目の数、したがって、セッション変数を使用する必要はありませんを得ることができますコマンド

チェック現在の時間内の特定の要素

SELECT 
    COUNT(*) 
FROM 
    my_elements_table 
WHERE 
    HOUR(createdon) = HOUR(NOW()) 
    AND DATE(createdon) = CURDATE() 
    AND createdby = the_user_you_are_checking 

ための「ポスト」の数は、過去の時間内の特定の要素

0のために、「ポスト」の数を確認してください

明らかに、あなたのデータベースフィールドとテーブルに基づいてSQLを適応させることができますが、それとの良好な出発点を持っている必要があります。

0

のために楽しみにしていたアクションの時間とユーザーがすべて5が何か記録を持っている場合、それらのすべてがデータを持っている場合は最初に確認するためにチェックを投稿しようとするたびに含むセッション内の5つの変数は時間を確認してくださいすべての時間が現在の時刻から1時間以内にある場合は、アクセスを拒否します。

+0

私はKrister Anderssonの記事で言ったように、自動化された攻撃のためにクッキーに基づくものは使用できません。彼らはあなたのセッションメカニズムに気にしないでしょう、彼らはあなたのセッションのクッキーに戻って、ポストし、捨てて、やり直すことができます。ユーザーのために同じこと、たくさんの写真を保存して、ただログオフしてログインし直すことができれば、あなたの仕組みには失敗しました。 –

1

私は、少なくともあなたがコメントについてそれをしなければならないが、私はあなたにも写真のためにそれを行うと思い、データベース内のコメントや写真に関するデータを保存すると思います。その場合、私はコメント/写真が作成されたときのタイムスタンプとそれを作成したユーザーのIDと残りの情報を保存します。

ユーザーが別の写真やコメントを追加しようとすると、あなたは最後の60分以内にその特定のユーザーによって作成されたDBにコメントや写真の枚数を数えます。 5を超える場合は、要求を破棄します。それ以外の場合は、情報を追加します。

1

ユーザーがいれば、データベースに保存していますか?次に、彼らがデータベースに何かコメントした最後の時間を保存し、それを使ってコメントできるかどうかをチェックするのはなぜですか?

+0

これは良いアイデアです – Malyo

+0

最後に何かをしたときだけ保存すれば、最後の1時間に5回何かしたかどうか分かりますか? –

0

別の解決策は、あなたの指定した時間内に投稿されたコメントを返すようにデータベースを照会し、その結果カウントが許可されるよりも高い場合、新しいコメントを許可していません。だろう私はあなたがデータベースにコメントを格納し、ポスト時間を含むフィールドを持っているということであるという仮定を作っています。これにより

「のuser_id = X tblComments FROM CREATED_ONを選択」:のような

何か。

関連する問題