2010-07-21 3 views
2

Я работаю над проектом электронной коммерции, используя компонент Auth для аутентификации и сеанса Component для хранения моей корзины.CakePHP Session Expires Даже когда браузер активен

Проблема в том, что сеанс очищается внезапно через некоторое время, даже когда я активно просматриваю сайт. Я знаю, что это должно быть из-за таймаута сеанса, но просто увеличение значения тайм-аута - это не то решение, которое я ищу.

Я хочу, чтобы сессия заканчивалась только тогда, когда пользователь закрывает свой браузер. Может ли это быть достигнуто?

+0

Ох ... моя сессия только что очистилась, даже когда я активно нажал на мою тележку. Может быть что-то не так с моим кодом? –

+0

Проверьте настройки php.ini. – Leo

ответ

1

AFAIK все, что вы можете сделать, это установить переменную тайм-аута сеанса далеко в будущее. Сессии автоматически очищаются, когда браузер закрыт (если вы не установили cookie типа «Запомнить меня»). Внедрение этого в будущее позволит эффективно выполнить то, что вам нужно сделать.

Как долго в вашей сессии это время? Это должно быть только тайм-аут, когда ваш пользователь неактивен в течение определенного периода времени. Если время истекает между запросами, и вы знаете, что время ожидания не прошло, у вас возникнут другие проблемы. Каковы настройки в файле core.php в отношении уровней безопасности и тайм-аутов сеанса?

+0

Эй, спасибо за ответ. Я установил для параметра Security.level значение high, а Session.timeout - 120 секунд. По вашему предложению я могу установить тайм-аут на более высокое значение, но в этом случае сеансы остаются активными, даже когда я могу закрыть браузер и вернуться позже. В любом случае, я думаю, нет никакого способа определить, был ли браузер закрыт как его на стороне клиента. –

+0

Установка уровня безопасности на высокий уровень имеет другие последствия, помимо умножения таймаута сеанса, IIRC. Он добавляет проверку референта, когда med | высокий. Когда установлено значение high, оно восстанавливает идентификатор сеанса между * every * request. Я бы посоветовал вам перевести его на средний. Затем, когда вы закрываете браузер (весь браузер должен выйти, а не только та вкладка ... проверьте свой диспетчер задач, чтобы убедиться, что он ушел), он закроет сеанс. И да, вы не можете определить, был ли браузер закрыт на стороне клиента. –

+0

Хорошо, спасибо ... Я изменил его на средний, и все работает нормально! :) –

Смежные вопросы