gpt4 book ai didi

php - 在不启动 PHP session 的情况下检查 PHP session ?

转载 作者:IT王子 更新时间:2023-10-28 23:53:49 26 4
gpt4 key购买 nike

是否可以在不启动 session 的情况下检查 session ?

我问的原因是,我正在开发的应用程序有一个集成的管理界面。因此,当管理员登录时,他们浏览与用户相同的页面以进行编辑。字段和选项根据用户权限显示。

这导致了两个问题。

一个是因为 session 正在启动,我无法启用浏览器缓存功能,因为发送的 header 始终是:

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0       

我正在使用 smarty 输出模板,但无法实现:

$smarty->cache_modified_check = true;

发送 304 未修改,因为 session 已经开始。使用上面的 smarty 参数对我来说是浏览器缓存的完美解决方案。

两个是因为使用该站点的每个人都在启动一个 session , session 目录中充满了不需要的 session 。

如果用户未登录,我可以直接销毁 session ,但随后每次加载页面时,用户都会创建和删除 session 。这是不好的做法吗?

因此,如果我可以在不启动 session 的情况下检查是否存在事件 session ,那么我所有的问题都将得到解决。有任何想法吗?浏览器在请求页面时不发送 session cookie吗?

理想情况下是这样的:

if (session_exists) {
session_start();
$users->priv = $_SESSION['priv'];
}
else {
$users->priv = guest;
}

---------------- 回应托尼·米勒 --------------

当使用 session_id() 时,您必须已经启动一个 session 才能返回一个 id。

session_start();
echo session_id($_SESSION);

或者你可以在调用session start之前为session设置一个id

session_id("adfasdf");
session_start();
echo session_id($_SESSION);

//prints "adfasdf"

这些都没有帮助我。除非我遗漏了什么。

最佳答案

你会想要 session_id() , 如果没有定义 session 则返回空字符串。

文档指出如果没有启动 session ,则返回空字符串(不是“无”)。

正如 2014 年的评论所指出的(我在 2009 年写了这个答案),如果有一个 cookie 中存储了一个 session ID,可以被 session_start() 获取,那么 session 就有可能开始。 .

从 PHP 5.4.0 开始,我们现在有 session_status()但这在 2009 年还不存在。

关于php - 在不启动 PHP session 的情况下检查 PHP session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1780736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com