2013-08-19 1 views
1

У меня есть приложение для электронной коммерции cakephp (v 1.3), где клиенты могут добавлять вещи в корзину. Пока пользователь не существует, браузер или период ожидания сеанса не превышены, переменные сеанса, определяющие содержимое корзины, сохраняются. Но если они закрывают браузер (IE/Firefox), тележка становится пустой, поскольку файл cookie уничтожается. Как ни странно, у Chrome нет этой проблемы, которая является еще одной загадкой.Как сохранить файлы cookie даже после перезапуска браузера в приложении CakePHP

Я попытался изменить переменную Session.cookieTimeout в файле /app/config/core.php, но это не имеет никакого эффекта. Всякий раз, когда я вытаскиваю информацию о файлах cookie в средствах браузера dev, он показывает имя файла cookie «PHPSESSID», и срок действия продолжает показывать «когда сессия заканчивается».

Я также пытался переписать время истечения срока действия cookie в функции AppController beforeFilter() с $ this-> Cookie- $ time, но это не делало ничего, чтобы определить тайм-аут cookie сеанса.

Мое предположение - это некоторая установка, которая устанавливает тайм-аут cookie равным 0, который является настройкой по умолчанию для окончания сеанса, когда браузер закрывается.

Какие еще вещи я должен попытаться предотвратить уничтожение файлов cookie при закрытии браузера пользователем?

ответ

1

обновление

session.cookie_lifetime определяет срок службы куки в секундах, которое отправляется в браузер. Значение 0 означает «пока браузер не будет закрыт». По умолчанию 0. См. Также session_get_cookie_params() и session_set_cookie_params().

Я думаю, что установка session.cookie_lifetime на такое высокое значение будет означать, что на вашем сервере будет много устаревших сессий, и это может быть проблемой, если у вас большое количество сеансов - обычно сеансы хранятся в системе/tmp папка. Когда эта папка, обычно на машинах * nix, заполняется, это может вызвать проблемы на машине - процессы начинают блокироваться, поскольку по какой-либо причине они не могут создавать временные файлы. (Вы можете изменить session.save_path на что-то другое, кроме/tmp, чтобы у вас не было этой проблемы, особенно на общих хостах).

А также установите это в файле .htaccess, а не в php.ini, чтобы он не повлиял на ваши другие проекты.

+0

поэтому добавление вышеуказанных строк в файл php.ini должно устранить проблему или я должен все еще выполнить определение session.cookieTimeout в core.php? –

+0

Да, вам нужно установить значение тайм-аута cookie сеанса на большее значение, чем значение по умолчанию. –

+0

Я пробовал это, но ничего не менял. так получается, если я просто добавлю «session.cookie_lifetime = xxxx» к php5.ini и перезагрузите сервер, который работает !! Вопрос в том, есть ли какие-то неправильные или непредвиденные проблемы, которые возникают из-за этого? –

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

  • Нет связанных вопросов^_^