【发布时间】:2016-12-12 21:54:31
【问题描述】:
在我们网站的管理页面的开头,我们测试是否设置了 $_SESSION 变量 admin,如果没有设置,我们使用以下代码将用户重定向回主页:
session_start();
if (!isset($_SESSION['admin']))
{
echo "<script>window.location='domain';</script>"; //domain is redacted
die();
}
管理员帐户一直在经历重定向,尤其是在登录后。因此,我创建了一个回显会话的 var_dump 的文件并进行了调查,结果发现 admin 变量实际上已设置,因此不应发生错误。有谁知道是什么导致了这种偏差,尤其是直接在登录和设置会话变量之后?注意:我已经在 $_SESSION 设置页面上检查了是否有任何内容发送到 HTML,就像我说的,变量已设置。
编辑:这是代码的最开始
【问题讨论】:
-
没有注销页面会破坏会话吗?
-
是的,有,但只有当有人在他们的页面上单击注销时才能访问它。我只是再次尝试进行另一次测试,这次它运行良好 - 不一致很困扰,因为我不能总是重现问题。 @Fred-ii-
-
欢迎来到 StackOverflow。请阅读How to ask a good question 上的帮助主题。为了帮助您,我们需要能够重现该问题。
-
嗨@ViníciusFagundes,感谢您的链接。不幸的是,我什至无法均匀地重现这个问题,所以我假设其他人一定遇到过这样的特殊问题,并且可能有解决方案。如果我问其他问题,我一定会牢记这些准则。
-
会话变量在一段时间后超时。但是如果
var_dump($_SESSION)显示变量,那么isset()应该可以工作。