Написал конфирмер для защиты форм от роботов. Бесплатно! Берите! 🙂
Описание задесь: http://promosite.ru/services/confirmer.php
Пример работы: http://promosite.ru/services/confirmer/form.php
Скачать: http://promosite.ru/services/confirmer/confirmer.zip
Требуется возможность работы PHP с графикой, а именно функции imagecreatefromgif, imagegif.
***
Это бесплатный комплект скриптов на PHP, который позволяет на любую форму установить проверку юзера на человечность. Особенность конфирмера: НЕ НУЖНО использовать сессии при работе! Картинки не генерятся индивидуально для пользователей, но защита вполне достаточная.
Комплект состоит из:
1. файл confirmer_pic.php, который генерит картинку с нужным числом псевдослучайных символов, меняющихся раз в минуту
2. файл confirmer_include.php, который знает алгоритм генерации картинки и проверяет введенную строчку на правильность. Должен находиться в той же директории, что и (1).
3. файл form.php, пример использования кода. Он инклюдит confirmer_include.php и получает результат проверки в виде переменной $confirmer_result (=0,1) и показывает картинку счетчика $confirmer_pic. Должен находиться в той же директории, что и (1,2), т.к. вызов картинки идет из той же директории. Вы можете это исправить сами.
4. директории с графической подложкой и GIF-картинками буковок. Эта директория прописана в файле confirmer_pic.php, вообще ее желательно прятать от чужих глаз. Все картинки можно менять на свои! Вы можете создать свой конфирмер, использовать свои картинки.
Картинка генерится на основе номера минуты, зашифрованного функцией crypt() с параметром $confirmer_salt. Эта строка (фактически: пароль) должна быть одинаковой в скриптах confirmer_pic.php и confirmer_include.php – иначе ничего не получится.
Пароль $confirmer_salt снаружи можно подобрать… 🙂 но это очень-очень долго :).
В параметре $confirmer_num файла confirmer_include.php задается число буковок, которые надо вводить юзеру в поле.
Картинка валидна в течение $confirmer_min минут после ее создания. Просто скрипт confirmer_include.php проверяет все значения, соотвествующие прошедшим минутам.
Работает конфирмер просто:
1. В начале скрипта form.php вы инклюдите confirmer_include.php.
2. Если запрос пришел методом GET, он выставляет переменную $confirmer_pic, которая содержит html-код: картинку с пояснением.
3. Если запрос пришел методом POST, он выставляет переменную $confirmer_result, которая равна 1, если юзер ввел правильный код, или 0, если неправильный (в этом случае он устанавливает $confirmer_pic и просит повторить ввод). Анализируете эти данные и делаете свои дела.
вроде работает… хотя иногда картинки бьются…
если у кого-нибудь картинки бытые показывает, плиз, на [email protected] напишите…
нет, это не битые картинки были, это я неправильный Content-length подсовывал. 🙂 Вроде должно быть нормально.
А можно картинку сделать чуть-чуть поконтрастней? А то я хоть и не робот, но прочитал с трудом… И лучше буквы располагать посередине, а не слева, ИМХО (а то много свободного места).
P.S. А зачем вообще все эти навороты с картинками? Простые способы закончились или уже не эффективны?
Не самая сложная защита. OCR-ка пишется на ура.
Рекомендую – писать в разных местах (вон там места сколько сводобного), сделать побольше шума (благо с таким фоном это несложно 🙂 ), использовать несколько шрифтов и цвета.
Это не панацея конечно, но задача усложнится.
Ну и что-то подобное http://mika.mtsblogs.ru/blog/2006/04/mikaz.html до кучи.
Ну и плюс каждый человек может собственные картинки туда втыкать. Т.е., замена списка картинок – буковок меняет всё.
mik, да уж, закие загогулины руками рисовать придется… 🙂
"Неправильно введены символы!"
В общем, ничего нового 🙂
издевательство над пользователями. такой нечитаемой каптчи я давно не видел.
своему вебмавстеру руки пообрываю за такое. мне нужны пользователи не только с идеальным зрением.
убрал…