会话变量消失了

时间:2016-08-15 13:04:11

标签: php apache firefox

我发现会话变量在大约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。

1 个答案:

答案 0 :(得分:1)

由于php.ini中的设置,您的会话数据可能会在客户端浏览器或服务器上超时。标准设置为:session.cookie_lifetimesession.gc_maxlifetime。事实上,还有其他重要的设置可以控制会话的生命周期,所以我强烈推荐这个article

因此,创建一个简单的php页面,调用函数phpinfo() PHP Manual - phpinfo,然后输出你的php设置。您应该能够从那里解决问题。