1 сентября 2010, 15:10
Кодирование электронного ящика
Нежелательная электронная почта (так называемая «спам») является неотъемлемой частью жизни каждого человека, если он когда-либо опубликовывал свой адрес в сети Интернет. Как для администраторов сайтов, так и для обычных пользователей, спам — постоянная проблема.

Если вы хотите указать свой адрес электронной почты на странице и не хотите, чтобы он был собран спам-ботом, то лучшее, что вы можете сделать, это закодировать свой электроящик так, чтобы браузер мог его распознать, а спам-бот нет. Следующий код поможет реализовать это у вас на сайте:
Мужичек, который это все придумал, просил оставить ссылку на его сайт с интересным доменным именем — rumkin.com.

Если вы хотите указать свой адрес электронной почты на странице и не хотите, чтобы он был собран спам-ботом, то лучшее, что вы можете сделать, это закодировать свой электроящик так, чтобы браузер мог его распознать, а спам-бот нет. Следующий код поможет реализовать это у вас на сайте:
<?php
// Функция кодирования электронного ящика
function hide_email($email, $title = '', $subject = '')
{
if (strpos($email, "@")) {
$parts = explode("@", $email);
$MailLink = "<a href='mailto:".$parts[0]."@".$parts[1];
if ($subject != ) { $MailLink .= "?subject=".urlencode($subject); }
$MailLink .= "'>".($title?$title:$parts[0]."@".$parts[1])."</a>";
$MailLetters = "";
for ($i = 0; $i < strlen($MailLink); $i++) {
$l = substr($MailLink, $i, 1);
if (strpos($MailLetters, $l) === false) {
$p = rand(0, strlen($MailLetters));
$MailLetters = substr($MailLetters, 0, $p).$l.substr($MailLetters, $p, strlen($MailLetters));
}
}
$MailLettersEnc = str_replace("\\", "\\\\", $MailLetters);
$MailLettersEnc = str_replace('\"', '\\\"', $MailLettersEnc);
$MailIndexes = "";
for ($i = 0; $i < strlen($MailLink); $i ++) {
$index = strpos($MailLetters, substr($MailLink, $i, 1));
$index += 48;
$MailIndexes .= chr($index);
}
$MailIndexes = str_replace("\\", "\\\\", $MailIndexes);
$MailIndexes = str_replace('\"', '\\\"', $MailIndexes);
$res = "<script type='text/javascript'>";
$res .= "ML=\.str_replace("<", "xxxx", $MailLettersEnc)."\";";
$res .= "MI=\"".str_replace("<", "xxxx", $MailIndexes)."\";";
$res .= "ML=ML.replace(/xxxx/g, '<');";
$res .= "MI=MI.replace(/xxxx/g, '<');"; $res .= "OT=\"\";";
$res .= "for(j=0;j < MI.length;j++){";
$res .= "OT+=ML.charAt(MI.charCodeAt(j)-48);";
$res .= "}document.write(OT);";
$res .= "</script>";
return $res;
} else {
return $email;
}
}
// Текст, содержащий адрес ящика
$text ="Чтобы ваш отзыв появился на сайте, отправьте его на наш email: user@host.name";
// Далее находим в тексте электроящик и кодируем его
$text = preg_replace("#([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#sie", "hide_email('\\1@\\2')", $text);
// Выводим текст на экран
echo $text;
?>Мужичек, который это все придумал, просил оставить ссылку на его сайт с интересным доменным именем — rumkin.com.

1 комментарий РСС
Ваш комментарий