Защита адресов электронной почты с использованием кодов ASCII

Данная функция поможет вам усложнить задачу спамерам, которые собирают email адреса по всему интернету. Написать такого робота не составляет труда. Но он будет искать email по определенному шаблону. Если заменить символы на их ASCII-коды, то робот просто пройдет мимо emaila, а пользователь увидит нормальный адрес.

protectMail('[email protected]');
В браузере вы видите только ссылку электронной почты; определяющая ее разметка HTML записана непонятно:
<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#109;&#97;&#105;&#108;&#64;&#97;&#100;&#100;&#114;&#101;&#115;&#115;&#46;&#120;&#121;">Send mail</a>
    function protectMail($s)
{
$result = '';
$s = 'mailto:' . $s;
for ($i = 0; $i < strlen($s); $i++)
{
$result .= '&#' . ord(substr($s, $i, 1)) . ';';
}
return $result;
}
echo '<a href="'.protectMail('[email protected]').'">Send mail</a>';

Некоторые специальные символы сложно использовать в строках, поскольку их тяжело ввести с клавиатуры.
Однако существуют коды ASCII, для работы с которыми РНР предлагает две функции:

- chr() преобразовывает ASCII-код в соответствующий символ;
- ord() возвращает ASCII-код символа.

Данные команды можно, например, использовать для защиты адресов электронной почты.
Поскольку спамеры пишут программы для поиска на Web-страницах определенных структур (адресов элнктронной почты), это может помочь уберечься от части спама. Суть защиты заключается в использовании кодов символов HTML для представления адресов, из-за чего спамерам становится сложнее найти данные электронной почты.
Приведенный выше код принимает в качестве параметра адрес электронной почты (в формате [email protected]ху) и возвращает mailto: [email protected]ху, однако в формате объектов HTML. Например, буква m в mailto: имеет ASCII-код 109: следовательно, &#109; обозначает m.
Для выполнения необходимых действий задается цикл for, проходящий по всем символам строки. Чтобы реализовать эту процедуру, необходимо определить длину строки с помощью strlen(). После этого функция ord() рассчитывает ASCII-коды всех символов, которые затем используются для построения HTML-кода.
Разумеется, это не гарантирует стопроцентной защиты; чтобы спрятать адрес электронной почты, нужно использовать и другие способы, в том числе — синтаксис (например, задание адреса в формате email at address dot ху) либо представление email адреса изображением.

Tweet

Интересное

58 мест, куда можно добавить свою RSS-ленту
Наши знаменитости не похожи на ваших

Комментарии

    Чтобы оставлять комментарии, авторизируйтесь

    Войти через OpenID

    Популярные
    Полезные ссылки
    Наверх