举报垃圾邮件或滥用

joh*_*van 3 php spam-prevention

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

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

在PHP中有没有这样做的东西?

Mic*_*yen 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
Run Code Online (Sandbox Code Playgroud)

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

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

标记这篇文章

一旦设置了数据库,您只需在每个帖子的某处放置一个"标记此帖子"链接.将此链接到提交到新创建的数据库的表单.在使用mysql_real_escape_stringpg_escape_string使用预准备语句将数据插入数据库之前,请务必正确清理数据.

适度

标记帖子后,您可以执行一些不同的操作.

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