MikhailK
Новичок
Сохранение результатов работы пользователя при завершении сессии
Существует CMS, в целом работает стабильно, но есть один недостаток - если пользователь в административной панели долго не проявляет активности, сессия заканчивается, а он об этом не знает. В результате он отправляет методом POST сформированные в текстовом редакторе данные, а система перекидывает его на форму авторизации, поскольку в сессионных переменных никакого пользователя нет. Данные пользователя теряются.
В идеале (чтобы вообще нигде ничего не менять в самой CMS) было бы ловить пришедший массив $_POST, записывать его в сесиию, проводить авторизацию (при этом исходный массив $_POST затрется), и если авторизация прошла успешно, то редиректиться черех хеадер как-то впихивая в поток сохраненный выше в сессионных переменных массив $_POST. Но, как я понял, так нельзя. Вернее, отправить массив методом POST можно, но одновременно с этим туда перейти нельзя.
Основной метод, как я понял, почитав по этой тематике - передавать массив $_POST через сессию. Однако, в моем случае придется переписывать много кода. Поэтому от этого варианта я отказался.
Можно повесить на сабмит каждой формы проверку через AJAX, не кончилась ли сессия и, если кончилась, добавлять к полям формы поля login/password. Это тоже трудозатратный вариант, хотя и менее.
Еще вариант, который мне кажется разумным - формировать на основе пришедшего массива $_POST hidden-поля в форме повторной авторизации, чтобы этот массив $_POST пришел еще раз, но уже с логином и паролем. Этот вариант самый низкозатратный, если не считать, что внутри массива $_POST могут быть как обычные значения, так и массивы. Хорошо, хоть, не деревья.
Вопрос в том - нет ли какого более простого способа.
Или может быть не заморачиваться, а повесить на интерфейс javascript'ик, который будет через AJAX дергать сервер раз в минуту, имитируя активность пользователя?
Существует CMS, в целом работает стабильно, но есть один недостаток - если пользователь в административной панели долго не проявляет активности, сессия заканчивается, а он об этом не знает. В результате он отправляет методом POST сформированные в текстовом редакторе данные, а система перекидывает его на форму авторизации, поскольку в сессионных переменных никакого пользователя нет. Данные пользователя теряются.
В идеале (чтобы вообще нигде ничего не менять в самой CMS) было бы ловить пришедший массив $_POST, записывать его в сесиию, проводить авторизацию (при этом исходный массив $_POST затрется), и если авторизация прошла успешно, то редиректиться черех хеадер как-то впихивая в поток сохраненный выше в сессионных переменных массив $_POST. Но, как я понял, так нельзя. Вернее, отправить массив методом POST можно, но одновременно с этим туда перейти нельзя.
Основной метод, как я понял, почитав по этой тематике - передавать массив $_POST через сессию. Однако, в моем случае придется переписывать много кода. Поэтому от этого варианта я отказался.
Можно повесить на сабмит каждой формы проверку через AJAX, не кончилась ли сессия и, если кончилась, добавлять к полям формы поля login/password. Это тоже трудозатратный вариант, хотя и менее.
Еще вариант, который мне кажется разумным - формировать на основе пришедшего массива $_POST hidden-поля в форме повторной авторизации, чтобы этот массив $_POST пришел еще раз, но уже с логином и паролем. Этот вариант самый низкозатратный, если не считать, что внутри массива $_POST могут быть как обычные значения, так и массивы. Хорошо, хоть, не деревья.
Вопрос в том - нет ли какого более простого способа.
Или может быть не заморачиваться, а повесить на интерфейс javascript'ик, который будет через AJAX дергать сервер раз в минуту, имитируя активность пользователя?
