У меня проблемы с сессиями PHP с IE11 и Edge (Windows 10), подключающимися к веб-серверу Lighttpd.
Рассмотрим этот код:
if (PHP_SESSION_NONE === session_status()) {
session_start();
}
$x = isset($_SESSION['bob'])? $_SESSION['bob'] : 'nothing';
echo 'The Session has started, bob is set to ' . $x .'<br/>';
$_SESSION['bob'] = 'hope';
echo 'The Session ID is ' . session_id() .'<br/>';
Когда я перехожу к test.php — содержащему приведенный выше код — с помощью Chrome, выключаю Chrome, снова открываю Chrome и затем возвращаюсь на эту страницу, на которой отображается
The Session has started, bob is set to hope
The Session ID is 6d2jbpmrrlrqt96h2nd19ua160
IE11 и Edge будут отображать:
Сессия началась, Боб ничего не установлен
Идентификатор сеанса: 35k87vgdt7t41q4lkphq815hq1
Почему IE11 и Edge отбрасывают сессию?
** Эта проблема также возникает в Apache WAMP, поэтому, хотя я видел ссылки на Lighttpd, являющиеся потенциальной причиной (Internet Explorer, jQuery, сессия потеряла php, Я не убежден.
** Кроме того, Fiddler показывает новый идентификатор сеанса с каждым подключением IE \ Edge.
Какие-нибудь мысли?
Добавление времени жизни куки в сеанс с помощью session_set_cookie_params лайк:
if (PHP_SESSION_NONE === session_status()) {
session_set_cookie_params(60*60*24*7);
session_start();
}
решает проблему: сеанс сохраняется после закрытия и повторного открытия браузера.
Документация php http://php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime состояния:
session.cookie_lifetime указывает время жизни куки в секундах, которое отправляется в браузер. Значение 0 означает «пока браузер не будет закрыт». По умолчанию
http://php.net/manual/en/function.session-set-cookie-params.php
Что поднимает вопрос, почему это работает в Chrome (45.0.2454.101 м)? Но это другой вопрос …
Сноска: Хотя максимальное значение времени жизни файла cookie сеанса может составлять 2 147 483 647, максимальное значение параметра «session.gc_maxlifetime» составляет 65535; и установка времени жизни на большие значения остановила мои сеансы работы.
Других решений пока нет …