PHP评论表格验证以防止垃圾邮件

时间:2012-02-20 21:57:52

标签: php forms validation comments spam-prevention

我正在为网站建立评论表。最终,它将是一个利用ajax的弹出式jquery形式。我正在尝试将PHP整合在一起,并希望确保我涵盖所有基础以防止垃圾邮件。

有四个字段:电子邮件,姓名,网址和评论。这就是我到目前为止所拥有的PHP:

$email = $_POST['email'];

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
    print "E-mail is correct";

    $to      = 'asdfdsafasdfsda@gmail.com';
    $subject = 'the subject';
    $message = 'hello';
    $headers = 'From: webmaster@example.com';

    mail($to, $subject, $message, $headers);

} else {
    print "E-mail is not correct";
}

只需检查以确保用户使用的是正确的电子邮件地址。我没有使用数据库,所以我不担心SQL注入或其他数据库相关的问题。我只是希望表单能够抵御垃圾邮件机器人。

我应该在我的php中包含哪些其他元素来防范垃圾邮件?

3 个答案:

答案 0 :(得分:2)

您通常无法确定邮件是垃圾邮件还是所需文本,因此您对电子邮件所做的语法检查将无效。

另一方面,有一些解决方案试图找到某些可以将消息识别为垃圾邮件的属性。例如,您可以查看http://wordpress.org/extend/plugins/akismet

一个常见的解决方案是使用验证码。这是一张只包含人类可以阅读的混淆文本的图片。谷歌提供了一个简单的验证码系统,如果你想尝试:http://www.google.com/recaptcha

答案 1 :(得分:1)

使用反垃圾邮件数据库。 Botscout有一个非常好的,以及Spambusted。他们有所有主要开源脚本的代码示例和插件。

至于您需要什么信息,一个重要信息是用户的IP。

CSRF令牌是一个好主意,它有助于确保通信仅来自您的网站(因此不允许某人从您网站之外的脚本发布评论),但它对于垃圾邮件发送者并不是特别有效知道他在做什么。

Captcha也是一个很好的解决方案(Google Recaptcha很容易包含在内),但对于最终用户来说这可能很麻烦。

如果您想要的唯一功能是评论,那么您可能还想尝试已经建立的解决方案,例如Disqus

答案 2 :(得分:0)

Captcha Ads
我没有用它但是读了一下。概念很有吸引力。它更容易为用户阅读,并在此过程中赚钱。

PS:除了recaptcha之外,请发布你最终实现的内容。