CodeIgniter safe_mailto 函数不会混淆电子邮件地址

CodeIgniter safe_mailto function does not obfuscate email address

我在 CodeIgniter 3.1.0 中使用了 safe_mailto() 函数,但它似乎无法正常工作,如文档中所述。这是我的代码:

<?php
$this->load->helper('url');
echo safe_mailto('myemail@site.com');
?>

如文档所述,此函数使用序号 JavaScript 混淆了 mailto 标签的版本,以帮助防止电子邮件地址被垃圾邮件机器人收集。但我得到的结果(通过复制 link 目的地)只是书面电子邮件地址的普通形式。
这里有什么遗漏吗?

是的,它确实有效。检查您的页面 HTML 来源。

用安全邮箱加载你的页面,然后查看页面源代码,找到 link,它不在那里。 Javascript 正在为屏幕解码它,但是 url 抓取器不会看到它,因为在源代码中它都是 javascript。

Link编码为:

<?php echo safe_mailto('me@my-site.com', 'Click Here to Contact Me'); ?>

Link 显示为:

Click Here to Contact Me

检查元素显示为:

<a href="mailto:me@my-site.com">Click Here to Contact Me</a>

源码其实是:

<script type="text/javascript">
//<![CDATA[
var l=new Array();
l[0] = '>';
l[1] = 'a';
l[2] = '/';
l[3] = '<';
l[4] = '|101';
l[5] = '|77';
l[6] = '|32';
l[7] = '|116';
l[8] = '|99';
l[9] = '|97';
l[10] = '|116';
l[11] = '|110';
l[12] = '|111';
l[13] = '|67';
l[14] = '|32';
l[15] = '|111';
l[16] = '|116';
l[17] = '|32';
l[18] = '|101';
l[19] = '|114';
l[20] = '|101';
l[21] = '|72';
l[22] = '|32';
l[23] = '|107';
l[24] = '|99';
l[25] = '|105';
l[26] = '|108';
l[27] = '|67';
l[28] = '>';
l[29] = '"';
l[30] = '|109';
l[31] = '|111';
l[32] = '|99';
l[33] = '|46';
l[34] = '|101';
l[35] = '|116';
l[36] = '|105';
l[37] = '|115';
l[38] = '|45';
l[39] = '|121';
l[40] = '|109';
l[41] = '|64';
l[42] = '|101';
l[43] = '|109';
l[44] = ':';
l[45] = 'o';
l[46] = 't';
l[47] = 'l';
l[48] = 'i';
l[49] = 'a';
l[50] = 'm';
l[51] = '"';
l[52] = '=';
l[53] = 'f';
l[54] = 'e';
l[55] = 'r';
l[56] = 'h';
l[57] = ' ';
l[58] = 'a';
l[59] = '<';

for (var i = l.length-1; i >= 0; i=i-1) {
    if (l[i].substring(0, 1) === '|')  document.write("&#"+unescape(l[i].substring(1))+";");
        else document.write(unescape(l[i]));
    }
    //]]>
</script>

因此它被混淆了。

希望对您有所帮助。

保罗.