在不启动PHP会话的情况下检查PHP会话?
是否可以在不启动会话的情况下检查会话?
我问的原因是,我正在开发的应用程序具有集成的管理界面。因此,当管理员登录时,他们浏览与用户相同的页面以进行编辑。字段和选项根据用户权限显示。
这会导致两个问题。
一种是因为正在启动会话,我无法启用浏览器缓存功能,因为发送的标头始终是:
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
我正在使用smarty来输出模板,并且无法实现:
$smarty->cache_modified_check = true;
发送未修改的 304,因为会话已启动。使用上述智能参数对我来说将是浏览器缓存的完美解决方案。
二是因为使用该站点的每个人都在启动会话,因此会话目录会充满不需要的会话。
如果用户未登录,我可以销毁会话,但随后每个页面加载,用户将创建和删除会话。这是不好的做法吗?
因此,如果我可以在不启动会话的情况下检查是否存在活动会话,那么我的所有问题都将得到解决。有什么想法吗?浏览器在请求页面时不会发送会话 Cookie 吗?
理想情况下,如下所示:
if (session_exists) {
session_start();
$users->priv = $_SESSION['priv'];
}
else {
$users->priv = guest;
}
--------------- 回应托尼·米勒---------------
使用 session_id() 时,您必须已经启动了会话才能返回 id。
session_start();
echo session_id($_SESSION);
或者,您可以在呼叫会话开始之前为会话设置 ID
session_id("adfasdf");
session_start();
echo session_id($_SESSION);
//prints "adfasdf"
这些都不能帮助我。除非我错过了什么。