举报垃圾邮件或滥用

时间:2011-01-25 14:35:21

标签: php spam-prevention

您如何在论坛/博客评论等网站中允许用户将内容标记为垃圾邮件或滥用内容?我知道你可以使用诸如askimet之类的服务并创建贝叶斯垃圾邮件过滤器类,但是实现允许用户报告内容的系统的最佳方法是什么?

您是否会在名为垃圾邮件和/或已标记的项目表中添加一个额外字段,您将如何区分这两个字段?基本上你将如何设置这样一个系统,数据库结构是什么?

有什么东西可以在PHP中执行此操作吗?

3 个答案:

答案 0 :(得分:8)

数据库

您希望详细跟踪每个帖子的标记,但您也可能希望允许多个人标记帖子。如果一个人标记一个帖子,他们的判断可能会有问题,但如果有20个人举报,你会立即知道这是一个问题。

我创建了一个看起来像这样的表:

flag_seq | post_id | flagger_username |       timestamp     |       user_notes      | active
============================================================================================
       1 |    1431 |          joebob1 | 2010-01-25 13:41:12 | it's spam             | TRUE
       2 |    1431 |      i_hate_spam | 2010-01-25 14:01:23 | You know I hate spam. | TRUE
       3 |    2283 |          joebob1 | 2010-01-24 08:09:57 | vulgar language       | TRUE

单独跟踪每个标记将允许您从管理或审核级别执行一些更高级的操作。

  • 您可以跟踪哪些人正在举报这些内容(如果有人滥用该功能,例如 joebob1 不喜欢* i_hate_spam *,那么他们会将自己的帖子标记为冒犯性的)。
  • 您可以通过SELECT COUNT(*) FROM flag_table WHERE post_id = '1431'快速计算。
  • 您可以通过定位已标记帖子的flag_seq来单独删除某些标记。
  • 让用户能够包含他们自己的评论,以便您确切知道他们报告此内容的原因和原因。您也可以选择在<select>框中为他们提供预定义的选项。
  • 设置active标志,即使在处理完毕后也不会删除它们。这对于在已标记的帖子上获取统计信息非常有用。您可以使用此信息来证明更多的审核人员,或证明他们有时间承诺研究打击垃圾邮件的新方法等。

标记此帖子

设置完数据库后,您只需在每个帖子的某个位置放置“标记此帖子”链接即可。将此链接到提交到新创建的数据库的表单。在使用mysql_real_escape_stringpg_escape_string或使用预准备语句将数据插入数据库之前,请务必正确清理数据。

适度

一旦帖子被标记,你可以做一些不同的事情。

  • 您可以编写一个cron来检查每个帖子上的标记数量,并在特定阈值下执行某些操作。
  • 您可以编写一个审核页面,列出所有活动标志以及处理它们的不同方法。 (例如删除帖子,编辑帖子,禁止海报,以上所有内容等)

答案 1 :(得分:0)

如果你想从sratch自己实现这个,你应该创建一个名为reports的表。

此表格包含以下字段:

  • REPORT_ID
  • POST_ID
  • 原因
  • 日期时间

我认为这就是它。

答案 2 :(得分:0)

我不知道php中是否有内置功能。你肯定可以在表格中使用额外的字段.. 假设您有一个类似

的表格

id标题内容日期...标志

每当某个用户将帖子标记为滥用或其他内容时,您只需在标志中递增计数器即可。 如果该计数器达到阈值(保持低3到5),取决于你想要的方式。如果超过阈值,只需删除帖子或您想要采取的任何行动!!