2017-02-25 6 views
2

私はブログを構築するためにSilexを使用しています。 「レポート/フラグのコメント」の実装方法

は当初、私はちょうど、私の commentsテーブルにブール flagged列を追加して、デフォルトで falseにそれを設定し、ユーザーは、「コメントを報告」ボタンをクリックするたびに trueにそれを切り替えます。私の計画は、すべてのフラグ付きのコメントを管理者に簡単に表示できるようにすることでした。しかし、どのユーザーも、すべてのコメントを報告して、管理パネルを溺れさせることができることに気付きました。

だから違う方法で試してみたい。私は、特定のコメントが何回表示されたのかをカウントしたいので、管理パネルの「フラグ付きのコメント」セクションに反映させることができます。そうすれば、1人の孤独なトロールと、大規模なフラグが立てられており、注意が必要です。
また、特定のユーザーが自分の旗を掲示したコメントを覚えておきたいので、彼が既にフラグを立てたコメントで彼の "コメントを報告する"ボタンを無効にすることができます。ここ

つの質問:それはこれを行うには良い方法

  • ですか?
  • 私はどのようにそれを私のデータベースに実装できますか? 1つのコメントにフラグが立てられた回数は、在庫が簡単でなければなりませんが、1人のユーザーが告知したすべてのコメントのリストはどんどん増えていますか?

ありがとう!

+0

ハッカーではなくトロールを心配している場合は、ブラウザにクッキーと少しのJavaScriptを実装することができます。防弾にしたい場合は、別のテーブルにフラグを格納し、フラグの日付、IP、およびユーザーIDも保存できます。それでは、正しい判断を下すためのすべてのデータがあります。 –

+0

すべてを 'flags'テーブルに入れるべきですか?私は 'flag_id'、' flag_date'、 'user_id'、' comment_id'カラムを見ることができました。そのようにすれば、コメントのIDを与えられたフラグの数をそのテーブルで数えるだけです。ユーザーのID。それですか? 'フラグ'テーブルにIDを格納することができたら、なぜ私はユーザIPを保存するのですか? – yurden

+0

flag_idがプライマリキーである可能性があります。comment_idはFKをコメントテーブルに追加し、dateはdatetime、user_idはコメントを作成したときにログに記録されます。 ipカラムは、ユーザがコメントにフラグを立てるためにログに記録する必要がない場合に便利です。だから、あなたがページを表示するときに "疑わしい"コメントをフィルタリングすることができます –

答えて

1

これを行う良い方法の1つは、最小限のユーザーIDとコメントIDを保持する新しいテーブルを作成することです。ユーザーがコメントにフラグを付けたときに追跡したい他の情報のための他の列を追加します。

この方法のメリットは、sqlの結合を使用してユーザーとそのフラグ付きのコメント、またはコメントとそれをフラグするすべてのユーザーをプルできることです。また、そのテーブルを直接クエリすることで、迅速なカウントを行うこともできます。

あなたのuseridとcommentidカラムのインデックスは、テーブルが成長するにつれて物事をうまく保ちます。

関連する問題