Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Защита e-mail от спам-ботов
Как защитить e-mail от спам-ботов?
Задача: защитить от спам-ботов e-mail на сайте.
Условия: мест, где может быть е-mail на странице очень много, поэтому хочется более-менее универсального решения.
Метод защиты: при генерации страницы все адреса электронной почты конвертируются в "обычные" ссылки, которые при отображении страницы у клиента яваскриптом возвращаются к исходному виду.
Решение: PHP - тут все просто - вылавливаем адреса и приводим в божеский вид. После генерации всей страницы, естественно:
= preg_replace('!(mailto:)?([a-z0-9\.\-]+)@([a-z0-9\.\-]+)\.([a-z]{2,6})!si', '/$2.m.$3/$4/', $output);
Javascript-часть в трех вариантах:
Чистый Javascript:
window.addEvent('load', function() {
var regEmail = /\/([a-zA-Z0-9\-\.]+)\.m\.([a-zA-Z0-9\-\.]+)\/([a-zA-Z]{2,6})\//g;
$document.body.innerHTML = document.body.innerHTML.replace(regEmail, '$1@$2.$3');
});
pure JS:
window.addEvent('load', function() {
var regEmail = /\/([a-zA-Z0-9\-\.]+)\.m\.([a-zA-Z0-9\-\.]+)\/([a-zA-Z]{2,6})\//g;
var list = document.getElementsByTagName('a');
for(var i=0; i if(list[i].href.match(regEmail)) {
var str = list[i].href.replace(document.location.protocol + '//' + document.location.hostname, '');
str = str.replace(regEmail, '$1@$2.$3');
list[i].href = 'mailto:' + str;
list[i].innerHTML = el.innerHTML.replace(regEmail, '$1@$2.$3');
}
}
if(document.body.innerHTML.match(regEmail)) {
$document.body.innerHTML = document.body.innerHTML.replace(regEmail, '$1@$2.$3');
}
});
Mootools:
window.addEvent('domready', function() {
var regEmail = /\/([a-zA-Z0-9\-\.]+)\.m\.([a-zA-Z0-9\-\.]+)\/([a-zA-Z]{2,6})\//g;
$$('a').each(function(el) {
if(el.href.match(regEmail)) {
var str = el.href.replace(document.location.protocol + '//' + document.location.hostname, '');
str = str.replace(regEmail, '$1@$2.$3');
el.href = 'mailto:' + str;
el.innerHTML = el.innerHTML.replace(regEmail, '$1@$2.$3');
}
});
if(document.body.innerHTML.match(regEmail)) {
$document.body.innerHTML = document.body.innerHTML.replace(regEmail, '$1@$2.$3');
}
});
Взято отсюда: http://community.livejournal.com/webdistortion
.
Прокомментировать/Отблагодарить