У меня собственная полноценная CMS со всеми вытекающими. Настроен пользовательский механизм ведения сессий - сессии пользователей заносятся в БД.
Появилась проблема с использованием captcha, которой раньше я, возможно, просто не замечал. Обыкновенная страница с комментариями, где нужно ввести защитный код, чтобы добавить комментарий.
Итак.
1. Открываем страницу, из БД считывается сессия, в процессе выполнения скрипта могут изменяться какие-то переменные состояния пользователя в $_SESSION, скрипт отработал и данные сессии сохранились в БД.
2. Далее браузер запрашивает картинку капчи и следует тот же алгоритм -> считывание сессии, работа скрипта (который выводит капчу и сохраняет ее код в $_SESSION), сохранение сессии.
Так вот. Если второе отработало после первого, то все в порядке. Но иногда получается так, что браузер запрашивает картинку капчи и скрипт вывода капчи отрабатывает РАНЬШЕ, чем отрабатывается вывод страницы с комментариями.
В таком случае первый скрипт перезаписывает состояние сессии второго скрипта (т.к. отрабатывает позже) и код капчи не сохраняется.
Не знаю как это лучше побороть. Поставил пока тупо задержку sleep(2) в скрипт вывода капчи.
|