Какова область применения php start_session()?
Какова сфера действия session
переменная $_SESSION['']
? Если у меня есть куча опросов на веб-страницах, один за другим, session variable
истекает через определенное время или он будет существовать до тех пор, пока вы не закроете браузер? Что произойдет, если вы переведете компьютер в спящий режим?
Я, кажется, потерял переменную сеанса после спящего режима, и я не уверен, является ли это проблемой или есть какая-то другая проблема.
3 ответа
Сеанс в целом (не только отдельные переменные) может быть продолжен или потерян по многим причинам.
В конфигурации по умолчанию сеанс считается "потерянным", когда браузер закрывается, потому что браузер удалит cookie, идентифицирующий сеанс. Это все еще где-то на сервере, пока сборщик мусора сеанса не удалит его. Из-за этого браузер, который простаивает в течение долгого времени, может все еще потерять свою сессию, потому что PHP удалит те, которые не использовались в последнее время.
Проверьте конфигурацию. В частности, вы можете настроить "session.gc_maxlifetime" и "session.cookie_lifetime" в соответствии со своими потребностями, если вам нужно, чтобы ваши сессии продолжались дольше.
Зависит от:
- время жизни куки,
0
должно означать "до тех пор, пока браузер не закроется", но Firefox / Mozilla склонны рассматривать его (из-за их функциональности "восстановление сеанса") как "навсегда" (что, по моему мнению, является проблемой безопасности, поэтому вы должны восстановить свой идентификатор при получении пустого массива сеанса). Итак: зависит от агента пользователя. - настроенная сборка мусора устаревших сессий. Обратите внимание, что вы можете позволить веб-серверу справиться с этим (X-процентное изменение очистки устаревших данных), что делает его немного непредсказуемым. Однако некоторые пакеты (например, PHP на Debian) просто используют cronjob для удаления устаревших сессий, что может привести к хаосу, если ваш пользовательский
session.gc_maxlifetime
настройки игнорируются из-за другой общесерверной настройки.
Итак, другими словами, ваш сеанс все еще жив, если ваш UA решил сохранить cookie, и ни один процесс не решил удалить данные. Что требует, чтобы вы знали настройки как UA, так и вашего сервера.
Переменные сеанса не имеют срока действия. Сессии истекают при условии session_gc.maxlifetime
и другие параметры конфигурации.
Сессии не привязаны к браузеру. Однако браузер может решить не отправлять необходимую информацию на сервер, чтобы сервер возобновил более ранний сеанс. Обычно это происходит, когда браузер обрабатывает все файлы cookie как сеансовые файлы cookie.
Термин cookie сеанса в этом контексте не означает cookie, который содержит идентификатор сеанса или переменные сеанса. Скорее, это cookie, который исчезает, как только браузер закрывается (т. Е. Заканчивается сеанс пользователя перед браузером).