Почему информация о сеансе PHP не сохраняется после перезапуска браузера, даже если сохраняется cookie и PHPSESSID? - PullRequest
1 голос
/ 04 ноября 2010

Логины на PHP-сайте, над которым я работаю, управляются сессионными cookie-файлами, которые хранят идентификатор пользователя в сеансе.Это работает нормально до тех пор, пока браузер не будет закрыт, и в этот момент информация об идентификаторе пользователя, похоже, будет потеряна.

Я установил время активности gc и cookie каждый на семь дней, а настройки сеанса phpследует (устанавливается через .htaccess):

session.use_cookies On  On
session.cookie_lifetime 604800  0
session.gc_divisor  1000    1000
session.gc_maxlifetime  604800  1440
session.gc_probability  0   0

Я могу проверить с помощью Chrome и Firebug, что PHPSESSID имеет срок жизни семь дней и что он сохраняется между перезапусками браузера.Тем не менее, переменные сеанса, такие как идентификатор пользователя, определенно не сохраняются (я могу использовать var_dump на отдельной странице, чтобы проверить это).Что может вызывать удаление переменных сеанса между перезапусками браузера, если время жизни gc и cookie задано правильно?

Ответы [ 3 ]

2 голосов
/ 04 ноября 2010

В итоге проблема возникла с хостинг-провайдером Rackspace Cloud. Rackspace Cloud Sites по умолчанию сохраняет информацию $ _SESSION на сервер, но не пытается перенаправить одного и того же пользователя на один и тот же сервер между перезапусками браузера. Мне нужно будет установить систему сеансов на основе базы данных или хранить файлы сеансов в другом месте.

Мой вопрос мог быть неясным из-за конфликта между "cookie cookie сеанса" (cookie, который сохраняется только до перезапуска браузера) и информацией $ _SESSION, которая должна сохраняться до сбора мусора.

1 голос
/ 04 ноября 2010

Убедитесь, что вы не перепутали "сессию" и "куки". Сеанс будет сохраняться, пока браузер остается открытым. Файлы cookie сохраняются до истечения срока их действия независимо от того, закрыт ли браузер.

Посетите эту страницу, чтобы получить рекомендации: http://www.w3schools.com/php/php_cookies.asp или официальную документацию по адресу: http://www.php.net/manual/en/function.setcookie.php

0 голосов
/ 04 ноября 2010

По умолчанию сеансовые куки удаляются при закрытии браузера.Вы должны предпринять другие меры для сохранения - вот почему вы видите «Запомнить меня» как вариант, поскольку это не ожидаемое поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...