Я использовал safe_mailto()
функция в CodeIgniter 3.1.0, но, кажется, она не работает, как описано в документах. Это мой код:
<?php
$this->load->helper('url');
echo safe_mailto('[email protected]');
?>
Как сказано в документе, эта функция обфусцировала версию тега mailto, используя порядковые номера, написанные с помощью JavaScript, чтобы предотвратить сбор адреса электронной почты спам-ботами. Но то, что я получаю в результате (копируя место назначения ссылки), является простой формой письменного адреса электронной почты.
Здесь чего-нибудь не хватает?
Да, это работает. Проверьте исходный HTML-код своей страницы.
Загрузите свою страницу с безопасным mailto, затем просмотрите исходный код страницы, найдите ссылку, ее там нет. Javascript декодирует его для экрана, но скребок URL не увидит его, так как в исходном коде это все javascript.
Ссылка закодирована как:
<?php echo safe_mailto('[email protected]', 'Click Here to Contact Me'); ?>
Ссылка выглядит как:
Click Here to Contact Me
Элемент проверки выглядит как:
<a href="mailto:[email protected]">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>
Следовательно это запутано.
Надеюсь, это поможет.
Павел.
Других решений пока нет …