No spam.php (как бороться со спамом)


Прислал: Spectator [ 24.05.2001 @ 09:48 ]
Раздел:: [ Статьи по PHP ]


Скажи спаму «no spam.php !»

...и снова о спаме. Кто о нем только не писал, и все писали, что это плохо и ай-яй-яй. Я не буду оригинальничать, и тоже скажу - это плохо. Это ай-яй-яй. Как бороться со спамерами со своей стороны, знает каждый - почтовые фильтры, всякие программы, отсылающие спамеру ответ, мол, адрес такой не найден и прочее... Базы данных спамеры составляют очень просто - натравливают специальные программы на различные сайты, в основном туда, где много email-адресов - форумы, гостевые, и прочее. Дальше - дело техники: программы просматривают html-код, ищут там mailto: и заносят почтовый адрес в свою базу. Бороться с этим можно самому, при публикации своего мыла - писать его, например, spectator[sobaka]mail.ru. Тот, кому надо, исправит адрес при написании письма сам.

Однако есть как минимум два способа, как при написании гостевых книг (или форумов) сделать защиту от спамеров. Первый - это не публиковать email вообще, а вместо его ставить ссылку на страницу с формой, с помощью которой желающий, не зная адреса, сможет отправить письмо соответствоющему человеку. С одной стороны - удобно. Так сделано, например, на webscript.ru ( http://webscript.ru///webscript.ru ). С другой - не совсем, потому что многие предпочитают не пользоваться формами, а отправить письмо через любимый bat! Да и вообще, неизвестно еще куда отправит ваше письмо данная форма. Шучу, конечно, но недостатки этого метода, как и достоинства, очевидны.

«Но есть способ лучше!». Не абсолютно лучше, но в некоторых случаях явно лучше. Заключается он в том, чтобы публиковать ссылки на email адреса вот в таком виде: click here ( http://webscript.ru///spectator.ru/nospam.php3?spectator[dog]mail.ru ). Желающие могут кликнуть и посмотреть, что это работает. Программы, «выдирающие» адреса, ничего на найдут.

Кликнули? Работает?

А теперь - как. Первая часть скрипта, которая заменяет в тексте адреса на такие ссылки простая, даже нет смысла ее приводить. Если что - то у меня в отзывах стоит примерно следующее:

$nospam= str_replace ('@','[dog]',$mail);
echo ('<a href=nospam.php3?'.$nospam.'>');

Вторая часть - это, собственно, скрипт nospam.php3. Состоит он ровно из двух строк:

<php
$url = str_replace ('[dog]','@',$QUERY_STRING);
header('Location: mailto:$url');
?>

Меняем [dog] на @ обратно и шлем в хедере mailto: и адрес. При этом ничего в браузер не грузится и предыдущая страница остается нетронутой.

Вот, собственно, и все. Осложним жизнь спамерам.