Интересная штука эта каптча! Я вот изначально решил пользоваться каптчей собственной разработки, думал — ну фигли там? Кому понадобится мои чахлопосещаемые сайты спамить? И каптча у меня была простой такой.
По правилам всем, конечно, проверка сесии нормальная была, а не уловка какая-нибудь с диапазоном чисел — некоторые хитрецы делают просто: выводят число строго от 2000 до 3000 скажем. И все!
Нет, у меня каптча была нормальная, правда, стандартным шрифтом и числовая, но я там даже шумы лепил и всячески старался усложнить задачу роботам.
И вот стал я замечать на Сепульке в комментариях мусор. Мусор был серьезный: со строкой хэша, с разных IP и естественно типа от разных юзеров. Надо сказать что регистрации на сепульке нет, как таковой, но в куки юзера я пишу. И стал этот мусор валиться со страшной силой — заходишь с утра на сайт — а он аж раскоряченый из-за строк по 1000 символов без пробела…
Ну, думаю, вот оно! Пришли таки крутые роботы на мой сайт. Прям лихие 90-е! Стал я думать, как каптчу усложнить… С одной стороны надо бы шрифтов подключить разных, сделать ее число-символьной и внести искажения геометрические. С другой стороны, у меня вся каптча в одном файле живет и эту простоту ломать не хочется и юзеров пугать закорючными буквами тоже не к лицу. Вобщем, я сделал как всегда просто и гениально: снял в массив по-точечно 10 цифр стандартного шрифта, а при генерации выводил цифру, выбирая из массива координаты точек. Но не просто выводил, а преобразованием координат вращал ее слегка и тригонометрией всякой кукожил. Получалось сильно отлично от стандартной цифры, но читаемо. Добавил горизонтальную перечеркивающую полоску и суперкаптча готова!
Прикол на самом деле в том, что дело то не в каптче было: я просто сессию коряво проверял, вот роботы дыркой и воспользовались:) Но благодаря этому случаю я сделал каптчу своей мечты!
Ну разве не прелесть: 
Помимо своей основной функции модуль каптчи выполняет у меня роль валидатора заполнения форм. Для предварительной проверки на заполненность обязательных полей. Для этого мне достаточно у обязадельного поля в id поставить звездочку, например <input id=email* name=email type=text> и проинклюдить внутри тэга формы файл каптчи. Результат вы можете видеть например здесь, оставляя комментарий. Очень удобно и универсально работает для любых форм. Естественно, это не отменяет необходимости проверять отправленные данные, но позволяет напомнить юзеру, что он не все заполнил без перезагрузки страниц и без потери введенных данных. И всего-то — одна строчка кода! Очень удобно.
testas | 18 Августа 2008 г. 03:02 |
Комментарии (4) |
Вернуться в блог