AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Защита 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


.

© Copyright 2008-2016 by KDG