减少表单垃圾邮件

时间:2013-12-12 23:53:09

标签: javascript php forms spam

我通常只做前端用户界面。但是,在我一直在努力的项目中,我必须制作一个表格。该表单可以通过电子邮件发布,但不幸的是,有大量垃圾邮件正在通过。我已经添加了CAPTCHA输入但是,如果有的话,这似乎并没有减少垃圾邮件数量。

经过一番研究,看来蜜罐是最好的选择。但是因为我不太了解php和javascript(在此工作:)),我不确定这个的最佳代码是什么或放在哪里。

但是,我还没有找到关于如何做到这一点的明确指南。

所以我的问题是;有没有人知道有关如何制作和实现蜜罐输入的指导的明确指南(使用服务器端条件代码)?

感谢任何帮助。感谢。

P.S。表格在灯箱"中,因此可能影响事物。

3 个答案:

答案 0 :(得分:2)

<form>
  <input name="not-honeypot" type="text">
  <input name="honeypot" type="text" style="display: none">
</form>

<?php

if (!empty($_POST['honeypot'])) {
    // this is a spam!
}

display: none注意[name=honeypot]。如果您的垃圾邮件发送者足够聪明,无法填充隐藏字段,则需要另一种方法来隐藏用户的蜜罐字段。或者根本不隐藏它。

答案 1 :(得分:1)

实际上非常简单。我将从记忆中尝试,所以预计会出现错别字。您可以随时谷歌获得更加可靠的答案,因为我确信那里的教程很少。

HTML:

<form method = "POST" action = "post.php">
  <input type = "email" name = "email>
  <input type = "email" name = "emailb">
  <input type = "submit">
</form>

Javascript(jquery):

$(document).ready(function(){
  $(".another[attribute='emailb']").hide();
  });

post.php中:

<?php
if (!empty($_POST['emailb']))
  throw new Exception("SPAAAAM");

你需要使用javascript,因为大多数自动机器人都不会使用它。但是,您还需要检查从该IP发送的X分钟内发送的表单数量以及其他一些选项以防止更多。注意:不要自动将其删除,将recaptcha显示为最后一行。

答案 2 :(得分:0)

首先,定义spam可能是什么:

垃圾邮件可能包括:
1. 比小写字母更多的大写字符
2. 比文字更多的空格
3. 非常短的帖子(例如10个字符)

然后,编写代码来处理它

1. if (strlen(preg_replace('![^A-Z]+!', '', $post)) > strlen(preg_replace('![^a-z]+!', '', $post))){
//spam post
}

2. if(!isset($post) || strlen(strip_tags($post))<150){
//too short - spam post
}

3. if (strlen(preg_replace('/\S/', '', $post)) > strlen(preg_replace('/\s+/', '',     $post)))
{
//spam post
}

这不会阻止垃圾邮件,但它应该过滤掉它。