草庐IT

php - 报告垃圾邮件或滥用行为

coder 2024-04-26 原文

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

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

是否已经在 php 中执行此操作?

最佳答案

数据库

您可能希望详细跟踪标记每个帖子的人,但您也可能希望允许多人标记一个帖子。如果一个人标记一个帖子,他们的判断可能会受到质疑,但如果有 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 flag,你永远不会删除你的标志,即使它们已经被处理过。这对于获取已标记帖子的统计信息很有用。您可以使用此信息来证明更多的审核人员是合理的,或者证明投入时间研究打击垃圾邮件的新方法等是合理的。

标记此帖子

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

审核

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

  • 您可以编写一个 cron 来检查每个帖子的标记数量,并在达到特定阈值时采取特定操作。
  • 您可以编写一个审核页面,列出所有事件标志以及不同的处理方式。 (例如删除帖子、编辑帖子、禁止发布者,以上所有操作等)

关于php - 报告垃圾邮件或滥用行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4794710/

有关php - 报告垃圾邮件或滥用行为的更多相关文章

  1. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  2. 报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果? - 2

    导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri

  3. ruby - Ruby gsub 替换中的行为不一致? - 2

    两个gsub产生不同的结果。谁能解释一下为什么?代码也可在https://gist.github.com/franklsf95/6c0f8938f28706b5644d获得.ver=9999str="\tCFBundleDevelopmentRegion\n\ten\n\tCFBundleVersion\n\t0.1.190\n\tAppID\n\t000000000000000"putsstr.gsub/(CFBundleVersion\n\t.*\.).*()/,"#{$1}#{ver}#{$2}"puts'--------'putsstr.gsub/(CFBundleVersio

  4. ruby-on-rails - Ruby 中意外的大小写行为 - 2

    我在一段非常简单的代码(如我所想)中得到了一个错误的值:org=4caseorgwhenorg=4val='H'endputsval=>nil请不要生气,我希望我错过了一些非常明显的东西,但我真的想不通。谢谢。 最佳答案 这是典型的Ruby错误。case有两种被调用的方法,一种是你传递一个东西作为分支的基础,另一种是你不传递的东西。如果您确实在case中指定了一个表达式语句然后评估所有其他条件并与===进行比较.在这种情况下org评估为false和org===false显然不是真的。所有其他情况也是如此,它们要么是真的,要么是假的。

  5. ruby - 使对象的行为类似于 ruby​​ 中并行分配的数组 - 2

    假设您在Ruby中执行此操作:ar=[1,2]x,y=ar然后,x==1和y==2。是否有一种方法可以在我自己的类中定义,从而产生相同的效果?例如rb=AllYourCode.newx,y=rb到目前为止,对于这样的赋值,我所能做的就是使x==rb和y=nil。Python有这样一个特性:>>>classFoo:...def__iter__(self):...returniter([1,2])...>>>x,y=Foo()>>>x1>>>y2 最佳答案 是的。定义#to_ary。这将使您的对象被视为要分配的数组。irb>o=Obje

  6. ruby - 了解在 Ruby 中与 lambda 一起使用的 inject 行为 - 2

    我经常将预配置的lambda插入可枚举的方法中,例如“map”、“select”等。但是“注入(inject)”的行为似乎有所不同。例如与mult4=lambda{|item|item*4}然后(5..10).map&mult4给我[20,24,28,32,36,40]但是,如果我制作一个2参数lambda用于像这样的注入(inject),multL=lambda{|product,n|product*n}我想说(5..10).inject(2)&multL因为“inject”有一个可选的单个初始值参数,但这给了我......irb(main):027:0>(5..10).inject

  7. ruby-on-rails - 验证电子邮件地址是 Paypal 用户 - 2

    我想验证一个电子邮件地址是否是PayPal用户。是否有API调用来执行此操作?是否有执行此操作的ruby​​库?谢谢 最佳答案 GetVerifiedStatus来自PayPal'sAdaptiveAccounts平台会为您做这件事。PayPal没有任何codesamples或SDKs用于Ruby中的自适应帐户,但我确实找到了编写codeforGetVerifiedStatusinRuby的人.您需要更改该代码以检查他们拥有的帐户类型的唯一更改是更改if@xml['accountStatus']!=nilaccount_status

  8. ruby-on-rails - Ruby on Rails - 需要在每周的特定时间将消息发送到电子邮件 - 2

    我想知道我应该如何着手这个项目。我需要每周向人们发送一次电子邮件。但是,这必须在每周的特定时间自动生成并发送。编码有多难?我需要知道是否有任何书籍可以提供帮助,或者你们中的任何人是否可以指导我。它必须使用ruby​​onrails进行编程。因此有一个网络服务和数据库集成。干杯 最佳答案 为什么这么复杂?您只需安排工作。您可以使用Delayed::Job例如。Delayed::Job让您可以使用run_at符号在特定时间安排作业,如下所示:Delayed::Job.enqueue(SendEmailJob.new(...),:run_

  9. ruby - 奇怪的 ruby​​ for 循环行为(为什么这样做有效) - 2

    defreverse(ary)result=[]forresult[0,0]inaryendresultendassert_equal["baz","bar","foo"],reverse(["foo","bar","baz"])这行得通,我想了解原因。有什么解释吗? 最佳答案 如果我使用each而不是for/in重写它,它看起来像这样:defreverse(ary)result=[]#forresult[0,0]inaryary.eachdo|item|result[0,0]=itemendresultendforainb基本上就

  10. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

随机推荐