parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

И снова нет...

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. Все-таки лучше возьмите Мишин класс - ваших знаний пока явно недостаточно для написания нормальной защиты от спама.