2013-12-05 5 views
0

У меня есть сайт с несколькими сотнями страниц. Большинство страниц не имеют session_start() вверху. У меня есть это на странице index.php, где мне нужна информация из переменной сеанса. Но если пользователь перейдет на страницу без session_start(), а затем вернется на страницу index.php, сеанс больше не активен. Это верно? Нужно ли мне это на КАЖДОЙ странице, чтобы поддерживать его?Выполняется ли сеанс, если пользователь приземляется на страницу без session_start()?

+0

Нет. До тех пор, пока файл cookie сеанса остается «вживую» в браузере, а сервер не называет соответствующий файл сеанса, сеанс «живой». Он может быть не использован, но он не будет разбит только потому, что вы попали на страницу, которая на самом деле ее не использует. Если он остается неиспользованным достаточно долго, тогда он будет очищен и уничтожен. –

+0

Я думаю, что я {{MIGHT}} разобрался в моей проблеме. Я отскакивал от www.domain.com до domain.com. Я предполагаю, что это убивает сессию, поскольку она рассматривается как новый URL. Кажется ли это, что это может быть моей проблемой? Когда вы меняете все на www.domain.com, похоже, я работаю так, как я надеялся. – Rick

ответ

0

No.

Это все работает на основе куки, хранящейся в браузере. Браузер отправляет cookie, и PHP использует это для загрузки данных сеанса. Если cookie отправляется, но сеанс не запускается, используя session_start, данные все еще там. (Как правило, хранится в /tmp где-то.)

3

Сеанс activity определяется в последний раз данных сеанса был доступ к вашему коду (в буквальном смысле - в последний раз вы вызвали session_start()).

Если время, прошедшее с момента последнего доступа, больше session.gc_maxlifetime, то оно собирается сборщиком мусора (с некоторой вероятностью).

Так что, если страница без session_start() не будет явно «завершать» ее, но не будет обращаться к данным сеанса в течение некоторого времени - будет.

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