如何通过简单的评论/评论系统减少发布的垃圾邮件?

时间:2013-02-17 11:12:34

标签: php regex

我知道我要问的问题有数百个例子。但是他们中没有一个像我想要的那样为我工作。

所以,我有一个textarea,人们可以在其中添加评论/评论。但评论框不断发送垃圾邮件。

我想正则表达式可能是阻止垃圾邮件发送者的最有效方法,但我对Regex感到厌恶。

还有其他方法可以阻止垃圾邮件吗?

编辑:垃圾邮件发送者不断发布类似内容:

  

Brianna     寻找工作Lolita Pics如果她在镜子前他妈的会更好!     看到自己变得更加性感f#@ $。     只是让角质思考它     Preteens Nn Models omg if that that

(破坏,轻微审查,以避免在工作中造成人们的问题)

所以我想阻止字符串

中的每个超链接

4 个答案:

答案 0 :(得分:1)

有许多不同的方法可以摆脱垃圾邮件:

  1. Captcha - 例如ReCaptcha,但现在您可以以低于3美元的价格购买约1000张重写验证码。
  2. 您的语言中有关最常见事实的问题 - 您可以向用户询问他们所知道的一些事实,但垃圾邮件发送者却不知道。
  3. 反垃圾邮件过滤器 - 例如Sblam!Akismet或其他反垃圾邮件服务。我认为它最适合你。

答案 1 :(得分:1)

很多Captcha现在可以解决,如果你想避免使用Captcha,那么一个简单的建议就是使用一个简单的文本陷阱。

在您的文字区域下方添加一个问题,例如;

  

“一周有多少天?”

然后添加另一个文本框,并将其与之比较;

  

7或7等。

如果测试失败,则拒绝该条目......

您可能需要随时更改问题,甚至列出不同的问题,但这是一种简单易行的实施方法。

答案 2 :(得分:1)

这里的答案很好,但有时愚蠢的机器人是一个很好的第一步。

绝大多数机器人只是阅读源代码并填写他们可以找到垃圾的所有输入字段,发送请求,然后希望它有效。它们非常愚蠢,所以像这样的东西可能会欺骗大多数机器人:

<p style="display:none">Screen readers: Use the next textarea (the first is used to confuse spam bots).</p>
<textarea name="comment" style="display:none"></textarea>
<textarea name="real_comment"></textarea>

然后在你的剧本中:

if (isset($_POST['comment']) && strlen($_POST['comment']) > 0) {
    die('Bots begone!');
}
$comment = $_POST['real_comment'];

换句话说,在HTML中放置一个虚拟textarea,使用CSS隐藏它,然后等待机器人填充它。

答案 3 :(得分:0)

执行所需操作的最简单方法是搜索字符串http://

以下if语句最多允许$text

中的3个链接
if (substr_count($text,"http://") > 3)

但这并不是一个足够的检查,因为有很多垃圾邮件,根本不包含任何链接 - 只是rubish。

所以你需要做的第二件事就是一个带有“坏词”的黑名单

    $lower = strtolower($text);
    foreach ($blockword as $word) {
            if (strpos($lower, strtolower($word))>0) {
                    //handle spam here..
            }
    }

毕竟,你必须保持一个不断增长的单词列表,但仍然需要删除大量的垃圾邮件..

所以你可以选择添加一个带有随机值的不可见字段,这些字段存储在会话中并检查这个值是否被正确提交

$_SESSION["random_secret"] = //create random string..

以后检查

if ($_POST["secret"] == $_SESSION["random_secret"])

通过此检查,您可以摆脱大量自动垃圾邮件(但仍然不是全部)

所以你最终得到了验证码