Это насчет JS то? Если в наш век у человека в браузере отключен js, значит это какой-то странный человек и не на него нужно ориентироваться. Да и проверить валидность каптчи при отключенном js никто не мешает - сравниваем $_POST['captcha'] и $_SESSION['captcha'].
Если в наш век у человека в браузере отключен js, то у человека, скорее всего, стоит noScript, что в наш век флеш-баннеров по центру экрана отнюдь не странно.
Вот статистика использования JS в браузерах за последние 5 лет (внизу страницы): http://www.w3schools.com/browsers/browse…
Сейчас только у 6% пользователей JS отключен. Не мучать же из-за них остальные 94%.
Почему потеряли? Никто не мешает проверять отправленные данные, если это так критично, но на момент отправки формы всего одна строчка кода облегчает жизнь 94% посетителей.
Насчет элементарности обхода - шумы там довольно сильные и механизм можно усложнять до бесконечности. Я же не говорю, что это идеальный вариант - это вариант может быть на первое время, не требующий затрат.
Вам же помешали, раз не предусмотрено что у пользователя может быть отключен JS.
Не давать отправить данные даже одному проценту пользователей показывает многое о профессионализме сайтостроителей. Вы потеряете гораздо больше пользователей, чем по статистике неиспользующих JS. Ведь на такой сайт они больше ходить не будут, и знакомым (у которых включен JS) не сообщат. А то что это вариант на "первое время", это не отговорка, т.к. проще найти полноценный вариант сейчас такой программы, чем потом оставить такую недоделку и терять пользователей.
Вы, наверное, не поняли. При отключенном JS форма отправки работает и каптча будет проверена по-любому при обработке $_POST. Только в этом случае, придется еще и обрабботать этот $_POST на предмет заполненности полей (это в любом случае надо делать!) Тогда форма превратиться в обычную, когда нотификация произходит после отправки (только это уже моя каптча за вас не сделает). Идея такой каптчи только в том, чтобы добавить возможность проверки для нормальных людей c JS еще до отправки формы, а не мотивировать неудобство для 94% одних только тем, что у 4% не включен JS (это к вопросу о профессионализме). Я же в десятый раз пишу: ничто не мешает делать проверку данных после отправки формы. Про первое время я сказал в контексте сложности взлома каптчи. Если у вас сломают эту каптчу, могу только позавидовать популярности вашего ресурса.
Понят теперь, хорошая идея, но в вашем коде все равно происходит отправка формы на сервер для проверки, что замедляет проверку. Можно сделать проверку на клиенте полностью, и при этом невзламываемой, что-то навроде подсчета на клиенте md5 того что ввели и сравнения с эталонным, подсчитанным на сервере и переданным открыто.
Я думал на эту тему, но что-то меня остановило на проверке через сервер. Это давно было, причину уже не помню (может я чего не умел тогда), надо подумать еще раз, спасибо!
Ой, ddos можно устроить на /captcha.php?captchadraw, генерация изображения работает и напрямую "мимо" формы. Сами посудите не надо быть семи пядей во лбу что бы написать скрипт который будет отправлять запросы на генерацию изображения, а ведь операция не самая легкая для сервера.
индекс завалить нереально если он грамотно построен. Вот простой пример ламерского ddos именно на капчу, правда ее уже доработали чего и Вам желаю: _http://ddos-hack.narod.ru/ruszona.html. Если посмотреть исходники, то там куча фреймов в которых идет запрос на генерацию капчи, движок четко отрабатывает и возвращает видимый нам вариант.
Ну тогда уж точку или : - чего мудрить то? Но пока браузеры это едят, не вижу смысла переделывать - звездочка прочно ассоциируется с обязательностью поля. Вообще же, можно в начало файла в настройки вынести.
Версия 2.0: настройки цвета, индикатора обязательного поля (*), уровня шума и наличия штриховки + защита от ddos, причесанный код и комментарии. Пример.
Моя маленькая каптча