Потерянные сеансы PHP с Internet Explorer и веб-сервером Lighttpd

У меня проблемы с сессиями 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.

Какие-нибудь мысли?

0

Решение

Добавление времени жизни куки в сеанс с помощью 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; и установка времени жизни на большие значения остановила мои сеансы работы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]