如何防止浏览器用JavaScript替换文本字段中的电子邮件


How to prevent browser from replacing email in text field with JavaScript?

我有一个这样的字段:

<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 的情况下执行此操作。 有什么想法吗?

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

我以前见过这个。我在我的网站上使用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>

仔细阅读代码,您会注意到它如何指出"该Email地址已受到反垃圾邮件插件保护"。

编辑

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

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

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

这通常可以解决问题。

相关文章: