Защита от спама с помощью яваскрипт

Spear

почемучка
Защита от спама с помощью яваскрипт

Здравствуйте,
столкнулся с проблемой защиты єл. писем от спама.
И нашёл сайт, где защита очень красиво и эффективно реализована.
вот сатй (это не реклама. просто для ознакомления http://ag.ru)
вот там справа внизу при нажатии на ссылку "сообщить об ошибке" открывается окно написания письма. Но адрес почты нигде в коде страницы не показывается.
Вот код ссылки:

<a href="" title="Нажмите здесь" class=sb onmouseout=tc('t_bughunt') onmousemove=ts(event,'t_bughunt') onclick="javascript: p_u('126,120,127,114,113,127,108', '113,107', '127,124', 'error%20on%20page%20http://www.ag.ru/'); blur(); return(false);"><font class=sb>Сообщить<br>об ошибке</font></a>

я покопалсЯ, думал все легко.. ан-нет:
цифры '126,120,127,114,113,127,108', '113,107', '127,124' отвечают буквам. Причем в обратном порядке. например последние две - u r. при нажатии на ссылку преобразуются на ru и перелд ними станет точка. Вообщем все очень сложно и красиво.

Я вот и хотел узнать - кто-нить знает как это дело реализуется? где-то можно достать таблицу номеров для символов?
 

Кром

Новичок
>Я вот и хотел узнать - кто-нить знает как это дело реализуется?

Реализуется на JavaScript.

>где-то можно достать таблицу номеров для символов?

Там же, в функции p_u().
 

Spear

почемучка
Кром
это шутка такая? Где там таблица сиволов? Я не вижу :( Да даже если и есть - я бы хотел узнать где эта таблица вообще есть в полном виде. Блин короче говря я в яве НОЛЬ. Неужели сложно помочь и ответить нормально, а не в стиле Фаната?
 

Spear

почемучка
kruglov
я же в яве ноль.
Я абсолютно непонял что вы написали ;)
пожалуйста, объясните. Буду очень благодарен.
Вот например нужно закодировать от спамеров адрес
[email protected]
 

Groove

Новичок
http://phpclub.ru/faq/JavaScript

-~{}~ 17.06.05 10:19:

Автор оригинала: Spear
kruglov
я же в яве ноль.
Я абсолютно непонял что вы написали ;)
пожалуйста, объясните. Буду очень благодарен.
Вот например нужно закодировать от спамеров адрес
[email protected]
Вот, на коленке слепил (с использованием той js-функции) - работает...
Захочешь оптимизировать - пожалуйста... :D

Кстати, а это могло бы легко быть тестовым заданием при приеме на работу наверное...

PHP:
<?
  function encode_mail($mail=''){
    //результат вернем в виде массива
    $_result = array();
    //переворачиваем строку
    $mail = strrev($mail);
    //находим первое вхождение точки в строке
    $pos = strpos($mail,'.');
    //определим доменную зону (строка уже ревесная)
    $mail_zone   = substr($mail,0,$pos);
    //создадим массив ASCII-кодов наименования доменной зоны
    $mail_zone_a = array();
    for($i=0; $i<strlen($mail_zone); $i++){
      $_result['zone'][] = ord($mail_zone{$i})+10;
    }  
    //вычислим остальную часть электронного адреса, без доменной зоны
    $tmp = substr($mail,$pos+1,strlen($mail));
    $tmp = explode('@',$tmp);
  
    //это домен
    $mail_domain = $tmp[1];
    //создадим массив ASCII-кодов наименования домена
    $mail_domain_a = array();
    for($i=0; $i<strlen($mail_domain); $i++){
      $_result['domain'][] = ord($mail_domain{$i})+10;
    }  
  
    //это имя
    $mail_name   = $tmp[0];
    //создадим массив ASCII-кодов имени
    $mail_name_a = array();
    for($i=0; $i<strlen($mail_name); $i++){
      $_result['name'][] = ord($mail_name{$i})+10;
    }  
    return $_result;
  }
  
  
  //вызов функции кодировани электронного адреса
  $enc_mail = encode_mail('[email protected]');
?>
<script>
function p_u(x, y, z) {
	c = arguments;
	for (b = 0; b < c.length; b++) {
        if (b == 3) continue;
		c[b] = c[b].split(',');
		c[b] = c[b].reverse();
		for (a = 0; a < c[b].length; a++)
			c[b][a] = String.fromCharCode(c[b][a] - 10);
		c[b] = c[b].join('');
	}
	document.location.href = "mailto:" + c[0] + "@" + c[1] + "." + c[2] + "?subject=" + c[3] + "";
	
}
</script> 

<a href="" title="Отправить письмо администратору!" 
  onclick="javascript: p_u(
          '<? print implode(',',$enc_mail['domain']); ?>', 
          '<? print implode(',',$enc_mail['name']); ?>', 
          '<? print implode(',',$enc_mail['zone']); ?>', 
          'Здравствуйте, дорогая редакция'); 
          return(false);">
	Отправить письмо администратору!
</a>
 

kruglov

Новичок
Spear
А не надо понимать, надо это скопировть в html-файл и посмотреть его браузером.
 

DiMA

php.spb.ru
Команда форума
боже, какие сложности, а просто на HTML как решить задачу не догадаться?

dima<b></b>@php<!-- [email protected] -->.spb&amp;#46;ru
 

Spear

почемучка
Groove
я уже про тему забыл.. зашёл и... НЕ ОЖИДАЛ ТАКОГО ОТВЕТА!
ОГРОМНОЕ СПАСИБО! Я бы это сам не написал, а если бы и написал - то очень не скоро! ЕЩЁ РАЗ СПАСИБО! Код очень полезный!

DiMA
щас спам боты такие, что твой имейл в раз захапают. Даже мыло вида
spear собака мейл точка ру
и такой украдут доблетсные бот-проги ;)
 

DiMA

php.spb.ru
Команда форума
полнейшая чушь, напиши для начала такой скрипт, а потом паронаидальные мысли публикуй

А вообще защищать мыло на вебстраницах бесполезно. Адрес стырят от ублюдских провайдеров, продающих логи sendmail'а спаммерам.
 

Kelkos

Сам себе программер
при нажатии на ссылку "сообщить об ошибке" открывается окно написания письма
Хм.. сделай эту страничку в PopUp окне и боты на неё не попадут.. (ниразу не видео ещё бота, который открывал бы PopUp-ы).
 

Spear

почемучка
Госопда, но лучше же все-таки перестраховаться, верно?

и тем более - попапы и прочая лабуда будет раздражать потенциальных отправителей писем ;) а так нажал - и пиши ;)
 
Сверху