【问题标题】:$_SESSION test at beginning of page is unpredictable - PHP页面开头的 $_SESSION 测试是不可预测的 - PHP
【发布时间】: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() 应该可以工作。

标签: php html session


【解决方案1】:

此问题似乎仅在登录后才发生。对于遇到类似问题的其他人,请务必使用 session_unset(); 删除以前浏览会话中的任何剩余信息。感谢其他人的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多