1 заметка с тегом

электронный ящик РСС

1 сентября 2010, 15:10

Кодирование электронного ящика

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

Кодирование электронного ящика

Если вы хотите указать свой адрес электронной почты на странице и не хотите, чтобы он был собран спам-ботом, то лучшее, что вы можете сделать, это закодировать свой электроящик так, чтобы браузер мог его распознать, а спам-бот нет. Следующий код поможет реализовать это у вас на сайте:
<?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.
PHP   спам   функции   электронный ящик