Защита e-mail'ов пользователей от спамеров

Автор: Беляев Александр
Сайт Автора: wm-help.net
E-mail Автора: [email protected]
Дата написания: 03.11.2006

    Как известно, основной проблемой интернета являются popup окна и спамеры. Если первую проблему можно решить, просто настроив пару фильтров почти в любом браузере, то вторая проблема – спамеры, куда более серьезна и требует к себе большего внимания.

    Что бы понять, как бороться со спамом, нужно сначала определить, откуда же берутся адреса для e-mail рассылок спама. Часть адресов спамерам продают недобросовестные администраторы крупных сайтов и компаний, еще часть берется с досок бесплатных объявлений, и основная часть e-mail'ов вычленяется из форумов и информационных порталов. Основной причиной, из-за которой с форумов и веб-сайтов "берутся" почтовые адреса – халатность администраторов и безрассудность пользователей, смело оставляющих свой e-mail везде, где попало. С пользователями все понятно, на то они и пользователи, что бы доставлять хлопоты и создавать проблемы администратору. А вот некоторым администраторам сайтов и форумов следовало бы позаботиться о своих посетителях, и самим, своими силами защищать их почтовые адреса.

    Существует несколько способов защиты адреса электронной почты:

  • Замена всего адреса его ASCI кодом, который до недавнего времени понимали только браузеры.
  • Применение JavaScript.
  • Использование формы обратной связи для общения с владельцем e-mail'а.
  • Хранение адресов в базе данных и выдача их только после подтверждения человечности (картинка с цифрами или форма со скрытыми полями и кнопкой).
  • Замена символа "@" и "." на их прописной эквивалент.
  • Наложение e-mail'а на изображение.

По-моему это все способы, которые я помню, если у вас есть еще какие ни будь способы защиты адресов – пишите.

    Рассмотрим первый случай – замена адреса его эквивалентом в ASCI. Вот php-функция замены:

function nospam($email)
{
$nospammail="";
$getval = strval($email);
for ($i = 0; $i < strlen($email); $i++) {
$asciicode = ord($getval[$i]);
$nospammail .= "&#$asciicode;";
}
return $nospammail;
}

    Здесь все просто, символы e-mail'а по очереди конвертируются в их ASCI представления, в результате получается нечитаемый адрес для большинства спам-ботов, однако в большинстве интернет браузеров данный адрес отображается нормально.

    Второй, третий и четвертый пункты – готовые решения, несложно найти в Яндексе или Google.

    Пятый способ защиты электронного адреса с помощью PHP-функции тоже очень прост в реализации:

function nospam($email)
{
$spam   = array("@", ".");
$nospam = array("[собака]", "[точка]"); // с таким же успехом сюда можно добавить тег <img>
return str_replace($spam, $nospam, $email);
}

    Ну и, наконец, шестой – самый сложный с точки зрения осуществления вариант защиты, т.к. практически невозможно угадать, какой длинны e-mail у вашего пользователя:

/* обратите внимание!! данная функция не возвращает изображения */
/* она его сразу выводит в браузер, но можно сохранить */
/* данное изображение добавив к функции imagepng ($im, имя_файла); */
function nospam($email)
{
header ("Content-type: image/png"); // заголовок о том что этот файл - изображение
$im = @imagecreate (200, 20) // создание пустого изображения
    or die ("Cannot Initialize new GD image stream"); // если не получилось, сообщаем об этом и выходим
$background_color = imagecolorallocate ($im, 250, 250, 250); // светло-серый фон изображения
$rand_color = imagecolorallocate ($im, rand(50, 150), rand(50, 150), rand(50, 150)); // случайный цвет текста
imagestring($im, 3, 3, 3, "[email protected]", $rand_color); // выводим е-mail
imagepng ($im); // отправляем изображение в браузер
}

    Вот и все, что я хотел бы рассказать вам в этой статье. И на последок, хотелось бы добавить, что желательно использовать сразу несколько способов защиты электронных адресов или ее вариантов, чередуя их в случайном порядке – это еще больше осложнит жизнь спамерам, которые так и норовят, осложнит получение почты нам – простым владельцам e-mail'ов.

Источник: https://wm-help.net/my-articles/article/email-protect.htmPage copy protected against web site content infringement by Copyscape
Перепечатка данной статьи разрешается только при письменном(e-mail) разрешении автора (Беляева Александра Дмитриевича) и при полном сохранении исходного вида статьи (ссылки, авторские реферальные ссылки, e-mail'ы, форматирование текста, ...), а так же указания точных данных об авторстве (данные автора + прямая [без редиректа и не закрытая от индексации] ссылка на статью).
В случае не выполнения данных правил, возможно применение «особых» мер, к нарушителям.