Как защитить e-mail от спам-ботов?........... |
Задача: защитить от спам-ботов e-mail на сайте.
Условия: мест где может быть е-mail на странице очень много вагон, поэтому хочется более-менее универсального решения.
Метод защиты: при генерации страницы все адреса электронной почты конвертируются в "обычные" ссылки, которые при отображении страницы у клиента яваскриптом возвращаются к исходному виду.
Решение: PHP - тут все просто - вылавливаем адреса и приводим в божеский вид. После генерации всей страницы, естественно:<?php
$output = 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'); } });
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'); } });