垃圾邮件预防/减少 - 联系表格?

Bil*_*llK 33 html javascript spam-prevention

我想在我的网站上添加一个简单的联系表单,以便客户可以轻松与我联系.

<form>
    NAME
    <input type='text' name='name' />
    EMAIL
    <input type='text' name='email' />
    MESSAGE
    <textarea name='message' />
    <input type='submit' />
</form>
Run Code Online (Sandbox Code Playgroud)

此表单只会通过电子邮件向我发送客户消息.

但是,我也希望减少(不是,我不是说消除但至少减少),垃圾邮件.

我已经研究过使用CAPTCHA,但最终,我不想阻止客户填写额外的信息.

我可以在我的联系表单中使用一个简单的垃圾邮件预防/减少方法的想法.

Wim*_*Wim 60

一个非常简单的技巧,我一直以惊人的成功率使用这个:提供一个文本字段,隐藏起来的人类用户style="display: none",但有一个诱人的名字,如email.大多数机器人会在这个领域填写一些东西,但人类看不到它,所以他们不会.在服务器上,只需确保该字段为空,否则将提交视为垃圾邮件.

  • 这是一个好主意!或者,如果机器人足够聪明以忽略此类标记,请在javascript中动态设置`display:none`,并添加注释,要求用户在javascript失败的情况下不要填写该字段. (6认同)
  • 正如我们所说,我正在构建一个机器人,以融入这种设计......*邪恶的笑* (5认同)
  • 我喜欢这个主意.CAPTCHA是一个痛苦的脖子.垃圾邮件预防应该是关于检测机器人,而不是证明用户是人. (3认同)
  • @counterbeing autocomplete="off" 标签应该可以解决这个问题,这是一个好主意,我现在要看看它的效果如何 (3认同)
  • 我想知道是否有任何浏览器的自动填充功能可以愚蠢到足以填充隐藏字段?不过这个想法很好,我可能会尝试一下。 (2认同)

Gra*_*aza 6

除CAPTCHA类型用户确认之外的唯一(客户端)方式是动态地编写整个事物.很多(但不是全部)机器人可能会忽略动态内容.例如

document.write("<"+"form>"
  +" NAME "
  +" <"+"input type='text' name='name' /> "
  +"EMAIL "
  +"<"+"input type='text' name='email' /> "
  +"MESSAGE "
  +"<"+"textarea name='message' /> "
  +"<"+"input type='submit' /> "
+"<\/form> ");
Run Code Online (Sandbox Code Playgroud)


Mil*_*kov 5

使用 Google 或 Yahoo 邮件帐户。他们有很好的反垃圾邮件过滤器。


小智 5

如果您想做一个完整的前端解决方案,最近我已经成功了,将form action属性保留为空白,并通过$(document).ready函数填充它。大多数垃圾邮件浏览器都使用禁用了JavaScript的浏览器,或者正在寻找隐藏字段以避免被检测到。

例:

您的html将是:

<form method="POST" action="" id="contact-form">
Run Code Online (Sandbox Code Playgroud)

您可以在该页面的任何位置使用它进行填充。

<script>
        $(document).ready(function(){
                 $("#contact-form").attr("action", "/yourMailScript.cgi");
        });
</script>
Run Code Online (Sandbox Code Playgroud)

没有JavaScript的漫游器浏览器将不会执行表单操作,并且在提交时会收到404。具有正常浏览器的任何人(除非由于偏执狂而禁用了JS)都将获得正常行为。