Рубрики

Опросец

Добавляете ли Вы свой блог в рейтинги?

View Results

Loading ... Loading ...

Реклама на сайте

Баннеры

Участник Blograte.ru Участник планеты Developers.org.ua
Форум блоггеров
Каталог "Тематических Блогов Рунета"

Как скрыть email на сайте

Проблема заваливания спамом ящика, который вы ввели на каком-либо форуме со временем начинает проявляться все быстрее и быстрее. Например, если мы заглянем на форумы, сделанные на базе phpbb3, то заметим, что при просмотре профиля пользователя его email ничем не скрыт и немудрено написать робота, который прогулявшись по такому форму соберет все email в нужную базу, а дальше на эти адреса будут приходить письма с предложением увеличить член или купить виагры. Можно конечно организовать отправку писем прямо с сайта, на почту пользователям, но это может позволить спамерам помимо адресов ваших пользователей использовать еще и ваш почтовый сервер, да и иногда публикация email-адреса необходима. Скрыть адрес от роботов можно обфускаторами адресов, но можно и написать свою простую функцию на 10 строк и применять её где угодно.Итак, сама функция выглядит так:

function hideEmail($email)
{
$character_set = '+-.0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';
$key = str_shuffle($character_set);
$cipher_text = '';
$id = 'e'.rand(1,999999999);
for ($i=0;$i<strlen($email);$i+=1) $cipher_text.= $key[strpos($character_set,$email[$i])];
$script = 'var a="'.$key.'";var b=a.split("").sort().join("");var c="'.$cipher_text.'";var d="";';
$script.= 'for(var e=0;e<c.length;e++)d+=b.charAt(a.indexOf(c.charAt(e)));';
$script.= 'document.getElementById("'.$id.'").innerHTML="<a href=\\"mailto:"+d+"\\">"+d+"</a>"';
$script = "eval(\"".str_replace(array("\\",'"'),array("\\\\",'\"'), $script)."\")";
$script = '<script type="text/javascript">/*<![CDATA[*/'.$script.'/*]]>*/</script>';
return '<span id="'.$id.'">[javascript protected email address]</span>'.$script;
}

Вызывается функция легко:

<?php echo hideEmail('myemail@mydomain.com'); ?>

В результате на странице в том месте html кода, где робот-ебобот ждет увидеть email, он видит примерно следующее:

<span id="e442173231">[javascript protected email address]</span><script type="text/javascript">/*<![CDATA[*/eval("var a=\"Tk-ZS7DhuaonNUmP@pjs8bg6v0IfV+i.E4JcXKOYMRLlQWt9_y1ewd5z2qCBF3rAHxG\";var b=a.split(\"\").sort().join(\"\");var c=\"dxWdRywUdxQzdRy5-lzd\";var d=\"\";for(var e=0;e<c.length;e++)d+=b.charAt(a.indexOf(c.charAt(e)));document.getElementById(\"e442173231\").innerHTML=\"<a href=\\\"mailto:\"+d+\"\\\">\"+d+\"</a>\"")/*]]>*/</script>

Внедрить этот код в phpbb3 будет просто, достаточно добавить саму функцию в php-файл, например в functions_dispaly.php, а в memberlist.php меняет строку:

'U_EMAIL'		=> $email,

на

'U_EMAIL'		=> hideEmail($email),

Далее, нам останется поправить шаблон memberlist_body.html: код приводить не буду ибо боюсь для каждой темы он уникален. Скажу лишь то, что нужно убрать<a href=”{memberrow.U_EMAIL}”>, т.к. наша функция уже возвращает тэг A.

Спам - явление крайне негативное, помню случай, когда так сильно достали авторегистраторы, что человеку пришлось вспомнить, что такое регистрация доменов, и создать новый сайт ибо отбиваться от роботов было невыносимо.

[Post to Twitter] Не жадничай, твитни пост, поделись с друзьями 

Похожие записи

Как скрыть email на сайте
Всего Комментариев - 7

  • Здравствуйте!
    Я решил эту проблему другим способом. Почтовые адреса пользователей моего сайта, я вывожу в виде картинок. Делается это очень просто. Правда не знаю, смогут ли роботы распознать надпись на ней, если смогут то это печально.
    А Вам, спасибо за идею!


    С уважением,
    Павел

    • Ну как, с картинкой есть и неудобства: нельзя выделить и скопировать + трафика пусть и немного но кушает больше, обращение к серверу, а если еще и без кэширования, хотя javascript грузит браузер посетителя, так что, тут роли не играет - с картинкой тоже способ неплохой

  • Что-то подобное есть в смарти. Даже несколько видов сокрытия: hex или javascript.
    {mailto address=”my@email.com” text=”web-junior” encode=”javascript”}
    При использовании javascript пишет на страничку через
    eval(unescape(”что-то невразумительное”))

  • я думаю, что скоро спамеры раскусят и этот способ

  • Чтобы раскусить этот способ нужно обучить бота компилировать джаваскрипт. Причем любой сложности

  • Опять же… данный способ подойдет не каждому, с учетом того что JS может быть отключен, а если у вас бизнес?… а не просто блог и кому то надо обратиться к вам по нужному вопросу, а JavaScript отключен, мне например лень было б лезть в настройки и включать, мне легче найти другую контору…

Написать Комментарий

 

 

 

Вы можете использовать эти HTML тэги при комментировании

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.