1

我有一个格式如下的字段:

<input type="text" name="email" />

我正在使用 PHP 来检查表单的有效性,该表单包含除此之外的其他字段。如果有效性检查失败,我将值存储在会话中并再次输出表单并显示错误消息并预先填充表单值。

如果我添加了一封电子邮件,比如“person@example.com”,并且表单无效,那么“person@example.com”将被 JS 替换:

 <script type='text/javascript'> <!-- var prefix = 'ma' + 'il' + 'to'; var path = 'hr' + 'ef' + '='; var addy34269 = 'person' + '@'; addy34269 = addy34269 + 'example' + '.' + 'com'; document.write('<a ' + path + '\'' + prefix + ':' + addy34269 + '\'>'); document.write(addy34269); document.write('<\/a>'); //-->\n </script><script type='text/javascript'> <!-- document.write('<span style=\'display: none;\'>'); //--> </script>This email address is being protected from spambots. You need JavaScript enabled to view it. <script type='text/javascript'> <!-- document.write('</'); document.write('span>'); //--> </script>

不用说,这不是我想要的。这发生在 Chrome 和 Firefox 中;我不确定其他人。如何防止浏览器在表单失效后替换电子邮件?

我曾想过使用 str_replace 使电子邮件看起来不像电子邮件,然后使用 JS 进行另一个字符串替换以将其恢复到原来的值,但如果可能的话,我想在没有 JS 的情况下这样做。有任何想法吗?

4

3 回答 3

1

我以前见过这个。我在我的网站上使用 CloudFare,并且对明文的电子邮件地址进行了编码,以防止它们被垃圾邮件机器人窃取。您可能有类似的服务来帮助保护您的网络主机。

 <script type='text/javascript'> <!-- var prefix = 'ma' + 'il' + 'to'; var path = 'hr' + 'ef' + '='; var addy34269 = 'person' + '@'; addy34269 = addy34269 + 'example' + '.' + 'com'; document.write('<a ' + path + '\'' + prefix + ':' + addy34269 + '\'>'); document.write(addy34269); document.write('<\/a>'); //-->\n </script><script type='text/javascript'> <!-- document.write('<span style=\'display: none;\'>'); //--> </script>This email address is being protected from spambots. You need JavaScript enabled to view it. <script type='text/javascript'> <!-- document.write('</'); document.write('span>'); //--> </script>

仔细阅读代码,您会注意到它是如何声明“此电子邮件地址受到垃圾邮件机器人保护”的。

编辑:这是服务器端编辑,因此请求该页面的每个浏览器都会得到该结果。

于 2012-05-09T19:59:34.357 回答
1

当您(或您的主机)使用 Joomla!您可以完全禁用“电子邮件伪装”插件或禁用单个电子邮件的伪装功能,如此处所述

于 2012-05-09T20:08:08.123 回答
1

当您将 cloudflare 激活为具有最高安全设置的 CDN 时,就会发生这种情况。您可以登录您的 cloudflare 帐户并将您的设置更改为中等。

此外,如果您使用的是 joomla,您可以在要替换的电子邮件地址前面添加 {emailcloak=off}。例如:{emailcloak=off} yourremail@emailofyoursite.com

这通常可以解决问题。

于 2013-03-18T21:04:43.467 回答