Защита e-mail’а на сайте от попадания в спам базу
На java-форуме проскочил очередной ученик, который собирает email’ы чисто в учебных целях. Ну, как Я и писал в том посте, вот первый небольшой скрипт, который не позволит e-mail’ам с вашего сайта попасть в спам-базу. Защита e-mail’а от попадания в спам-базу основана на двух условиях:
1. Человек не участвует в этом.
2. Парсер имеет регулярное выражение, которое не проверяет наличие левых символов в e-mail адресах.
Обычно парсеры выдёргивают ссылки протокола mailto: или текст на странице, который попадает под шаблон something@domain.com и добавляют в свою спам-базу.
Мы же попробуем помешать им в этом. Для этого берём следующие скрипты:
/** * Защищает e-mail адрес простейшим способом * @param string e-mail адрес * @return string ссылка на защищённый email адрес */ function encryptEmail($email) { $email = str_split($email,3); // разбиваем email по кусочкам в 3 символа $ret = ""; // строка для сборки for($i = 0;$i<count($email);$i++) // пока есть кусочки $ret .= $email[$i].'|'; // собираем их по разделителю return '<a href="javascript:getLink(\'mailto:'.$ret.'\')"><script type="text/javascript" language="javascript"> document.write("'.$ret.'".replace(/\|/g,"")); </script></a>'; } |
В возвращаемой ссылке фигурируют два куска кода на javascript. Первый – это в атрибуте ссылки. Там вызывается следующая javascript функция:
function getLink(slink) { window.location = unescape(slink).replace(/\|/g,""); } |
Функция getLink(slink) вырезает все лишние символы, которые мы добавили в encryptEmail, и перенаправляет пользователя по ссылке. В результате у нас откроектся приложение, которое по умолчанию обрабатывает ссылки mailto:.
Второй кусок кода на javascript’е – отображает пользователю e-mail адрес без символов. Функция write() выполняется и заменяет специальный символы, добавленные нами для защиты e-mail’а, уже на стороне клиента.
Таким образом, парсер видит невалидный e-mail, а пользователь видит и переходит по правильному e-mail’у.
Какие недостатки?
1. Парсер может выдирать не только текст и цифры, но и вообще, всё, что попадает под шаблон НЕЧТО@НЕЧТО.НЕЧТО. Или всё, что идёт после mailto:. Таким образом e-mail не избежит попадания в спам-базу.
2. Участие человека. Тут можно просто запустить замену | по всем результатам и получим чистый email.
Скачать пример защиты email от попадания в спам базу. При использовании на своём сайте не забудьте указать ссылку на эту статью.
О! Как здорово и просто. Спасибо. Может быть заберу себе на сайт!
Хех… А если мыло указано на сайте без mailto: то, очевидно, толку от этого никакого?
именно для этого варианта – да. Чтобы работало без mailto, надо делать проверку, есть ли mailto в начале. Если нет – то добавлять :)
Ну это уж совсем велосипед получится, проще уж по старинке, пробелы вставлять или @ словом заменять…
пробелы и @ заменяются уже автоматом :)
вариантов работы такого скрипта – очень много :)