我发现会话变量在大约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。
答案 0 :(得分:1)
由于php.ini中的设置,您的会话数据可能会在客户端浏览器或服务器上超时。标准设置为:session.cookie_lifetime
和session.gc_maxlifetime
。事实上,还有其他重要的设置可以控制会话的生命周期,所以我强烈推荐这个article。
因此,创建一个简单的php页面,调用函数phpinfo()
PHP Manual - phpinfo,然后输出你的php设置。您应该能够从那里解决问题。