如何编写代码来保护通过PHP显示在页面上的电子邮件ID,以防止垃圾邮件机器人

时间:2009-12-23 07:35:24

标签: php

我使用PHP在页面上显示存储在数据库中的电子邮件地址。 页面上的电子邮件地址显示如下:

电子邮件:test@example.com

现在,页面上显示的电子邮件地址应该使用JS垃圾邮件保护来隐藏垃圾邮件机器人。

7 个答案:

答案 0 :(得分:1)

尝试email encoder,或在脚本中实施一个。

答案 1 :(得分:1)

您可以尝试使用图像(使用php-gd lib)在图像上写入然后显示。 (比如facebook)

答案 2 :(得分:0)

答案 3 :(得分:0)

我认为你最好不要打扰;客户端垃圾邮件过滤器现在相当不错,通过跳跃箍,你只会让人类更难。

尽管如此,最好的方法是将其转换为您想要的任何格式,无论是图像还是简单的字符串替换:

joe@domain.com -> joeATdomainDOTcom

然后写出标有某种类标识符的地址:

<a href="mailto:joeATdomainDOTcom" class="Email">
  <!-- image or link text here -->
</a>

然后使用Javascript解码所有电子邮件链接并将href属性重新写入真实地址。大多数抓取电子邮件地址的蜘蛛都不会执行Javascript,所以编码的半无用地址就是他们所能看到的。

启用了JS的用户将获得或多或少的预期功能(可点击的mailto链接),而没有JS的用户将至少获得人类可读的地址。

你可以做的最糟糕的事情是写出未编码的地址,并相信一些Javascript来隐藏它们。

答案 4 :(得分:0)

PHPEnkoderHivelogic's The Enkoder的端口)

  

“Enkoder,它通过随机编码一段文本并向浏览器发送自我评估Javascript来生成原始文本。这有两个方面:第一,机器人必须首先完成Javascript实现;其次,解码过程可以任意计算密集。“

     

获得BSD许可。

答案 5 :(得分:0)

尝试http://recaptcha.net/learnmore.html它可以使用验证码来保护电子邮件地址。虽然尝试过,但我使用reCaptcha作为登录表单,并且很容易使用。

答案 6 :(得分:0)

将它们显示为图片是一种选择。还要求用户在看到电子邮件地址之前通过CAPTCHA测试。结合这两个,垃圾邮件机器人可能永远不会收到电子邮件地址。