Я нахожу, что переменные сеанса исчезают примерно через 30 – 90 минут. Я проверяю, что сеанс был запущен обычным способом, прежде чем извлекать переменную сеанса:
function chkSsn() { if (session_status() == PHP_SESSION_NONE) session_start(); }
Я устанавливаю переменные сеанса следующим образом:
function setSsnVar($nm, $vlu) { chkSsn(); $_SESSION[$nm] = $vlu; }
И получить их следующим образом:
function ssnVar($nm) { chkSsn(); if (array_key_exists($nm, $_SESSION)) return $_SESSION[$nm]; else return ""; }
Я попытался добавить следующие строки сразу после «session_start», но это не имело никакого значения:
header("Cache-Control: no-cache"); header("Pragma: no-cache");
Я использую Firefox 48, Apache / 2.4.7 (Ubuntu) и PHP версии 5.5.9-1ubuntu4.19.
Данные сеанса могут быть синхронизированы в клиентском браузере или на сервере из-за настроек в php.ini. Стандартными настройками являются session.cookie_lifetime
и session.gc_maxlifetime
. Фактически, есть дополнительные важные настройки, которые управляют временем жизни сеанса, поэтому я настоятельно рекомендовал эту статью .
Поэтому создайте простую php-страницу, которая вызывает функцию phpinfo()
PHP Manual – phpinfo, и выведет ваши настройки php. Вы должны решить эту проблему.