No spam.php (как боросться со спамом)
Следующий текст снова про php
.
...и снова о спаме. Кто о нем только не писал, и все писали, что это плохо
и ай-яй-яй. Я не буду оригинальничать, и тоже скажу – это плохо. Это ай-яй-яй.
Как бороться со спамерами со своей стороны, знает каждый – почтовые фильтры, всякие
программы, отсылающие спамеру ответ, мол, адрес такой не найден и прочее... Базы
данных спамеры составляют очень просто – натравливают специальные программы на
различные сайты, в основном туда, где много email-адресов – форумы, гостевые,
и прочее. Дальше – дело техники: программы просматривают html-код, ищут там mailto:
и заносят почтовый адрес в свою базу. Бороться с этим можно самому, при публикации
своего мыла – писать его, например, spectator[sobaka]mail.ru. Тот, кому надо,
исправит адрес при написании письма сам.
Однако есть как минимум два способа, как при написании гостевых книг (или форумов)
сделать защиту от спамеров. Первый – это не публиковать email вообще, а вместо
его ставить ссылку на страницу с формой, спомощью которой желающий, не зная адреса,
сможет отправить письмо соответствующему человеку. С одной стороны – удобно. Так
сделано, например, на webscript.ru. С другой –
не совсем, потому что многие предпочитают не пользоваться формами, а отправить
письмо через любимый bat! Да и вообще, неизвестно еще куда отправит ваше письмо
данная форма. Шучу, конечно, но недостатки этого метода, как и достоинства, очевидны.
«Но есть способ лучше!». Не абсолютно лучше, но в некоторых случаях
явно лучше. Заключается он в том, чтобы публиковать ссылки на email адреса вот
в таком виде: click here. Желающие
могут кликнуть и посмотреть, что это работает. Программы, «выдирающие»
адреса, ничего на найдут.
Кликнули? Работает?
А теперь – как. Первая часть скрипта, которая заменяет в тексте адреса на такие
ссылки простая, даже нет смысла ее приводить. Если что – то у меня в отзывах стоит
примерно следующее:
$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: и адрес.
При этом ничего в браузер не грузится и текущая страница остается нетронутой.
(Правда, мне тут уже сообщили, что в IE 5.5 это не так...).
Вот, собственно, и все. Осложним жизнь спамерам. Вместо [dog] можно использовать
все, что угодно, на что хватит вашего воображения.
З.Ы. : о баге в IE 5.5. Он при клике на эту ссылку открывает пустое окно. Почтовая
программа, правда, тоже запускается, но все-таки... Пустое окно – нехорошо...
Давайте посмотрим... А теперь эта ссылка в IE 5.5 – работает? Click
here.
Да?
Сделано – просто. Но все равно через... Вставляем куда-нибудь пустой iframe:
<iframe src="" frameborder=0 vspace=0 hspace=0 width=1 height=1 marginwidth=5
marginheight=5 scrolling=no name="mail"></iframe>
Ту часть, которая выводит ссылки, пишем примерно вот так:
$nospam= str_replace ('@','[dog]',$mail);
echo ('<a href=nospam.php3?'.$nospam);
if (eregi ("MSIE 5", $HTTP_USER_AGENT)) {echo (' target=mail'); }
echo ('>');
Для того, чтобы если у человека IE 5 и выше – ссылки шли в этот пустой iframe...
Вроде работает... Только вот такой простое решение превратилось в какую-то
бяку...
А это вам – чтобы не скучали.
Автор: Дмитрий Смирнов
Информация взята с сайта Spectator