Добрый вечер!
Сегодня хочу рассказать как я эффективно борюсь с регистрационным спамом на своих сайтах/проектах. Методика очень простая, в основе используется тот факт, что спамовый движки в большинстве своем просто парсят форму и не эмулируют работу js-скриптов на сайте и браузер целиком. Поэтому, просто добавляем в форму небольшой и простенький javascript код который меняет значение одного из полей формы при отправке. Тем самым браузеры будут посылать одно значение, правильное, измененное, а спам движки которые тупо парсят форму, будут посылать другое значение. Соответственно, остается только добавить в обработчике формы проверку и тем самым отсеивать весь спам.
Вот пример кода формы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <form name="addForm" action="/humor/add.php" method="POST"> Название: <input type="text" style="width: 550px;" name="title" value=""> Текст: <textarea tabindex="1" style="height: 300px; width: 550px;" cols="100" rows="40" name="story"></textarea> Ваше имя/ник или ссылка на автора (не обязательно): <input type="text" style="width: 200px;" name="nick" value=""> <input type='hidden' id='magic' name='magic' value='5' /> <div align="center"><input type="submit" value=" Добавить " onclick="setStep();" ></div><br/> </form> <script language="javascript"> function setStep() { document.forms["addForm"].magic.value = 10; } </script> |
По-умолчанию в форме есть скрытое поле "magic", со значением "5". При клике в браузере (если включен javascript) оно меняется на 10.
В код на стороне обработчика формы (на сервере в php-скрипт) добавляем следующий код, например:
1 2 3 4 5 6 7 | $magic = $_POST["magic"]; if ($magic == 10) { do_register($login, $password, $email); } else { // this is spam echo "Site require javascript to work\n"; }; |
Вот и все.
Leave a Reply
Using Gravatars in the comments - get your own and be recognized!
XHTML: These are some of the tags you can use:
<a href=""> <b> <blockquote> <code> <em> <i> <strike> <strong>