И снова нет...
Sumo 06.10.2010 14:06
/ 06.10.2010 14:07
^math:crypt производит хеширование, а не шифрование, поэтому восстановить исходное значение из куки не получится.
file:lock не решает проблему: построение капчи и проверка данных делается в двух разных запросах и, соответственно, в двух разных процессах Парсера. Т.е. лок в данном случае просто не будет работать.
Общий алгоритм работы капчи такой:
- Формируем пару: уникальный ключ (uid) и число.
- Сохраняем пару в хранилище на сервере (хешфайл, БД и т.п.).
- Формируем изображение с числом.
- В форму выводим скрытое поле с uid'ом, поле для ввода числа и саму картинку с числом.
- Проверяем соответствует ли число, которое пришло из формы тому, что мы записали на сервере (ищем число по uid'у).
Обычно построение капчи выносят в отдельный url и делают это динамически, без записи промежуточных файлов на диск:
- form.html - тут у нас форма и процесс ее обработки. В этом скрипте мы формируем пару uid/число.
- captcha.gif?uid - а здесь динамически строим картинку (число берем из хранилища по uid'у) и выдаем ее в response:body (как выдать картинку можно посомтреть в документации). соответсвенно в форме просто ставим <img src="captcha.gif?uid" />
p.s. Все-таки лучше возьмите Мишин класс - ваших знаний пока явно недостаточно для написания нормальной защиты от спама.
- Не обновляется картинка, нарисованная Парсером, MultiSyn 05.10.2010 18:26 / 05.10.2010 19:01
- Ответ, Misha v.3 [M] 06.10.2010 03:39 / 06.10.2010 03:39
- Ответ, Sumo [M] 05.10.2010 23:06 / 05.10.2010 23:06
- Ответ, MultiSyn 06.10.2010 09:31
- Не пойдет, Sumo [M] 06.10.2010 11:10
- Ответ, MultiSyn 06.10.2010 12:40
- И снова нет..., Sumo [M] 06.10.2010 14:06 / 06.10.2010 14:07
- +, Maxx [M] 06.10.2010 12:33 / 06.10.2010 12:34