【发布时间】:2011-10-22 09:36:28
【问题描述】:
目前我一直在 $_SESSION 上测试变量,如果 isset() 返回 false,则假定会话已超时以显示登录页面。
session_start();
if (isset($_POST['login'])):
// Process login credentials
$_SESSION['account'] = Array('user'=>'username');
endif;
if (! isset($_SESSION['account'])):
// User not logged in, show login page
else:
// User is logged in, show account page
endif;
但是,最近有用户报告说帐户页面是空白的。我假设没有可用的会话数据,因为我上面的代码在某种程度上存在缺陷。有人可以指出正确的方向来正确测试会话是否在 PHP 中超时?
【问题讨论】:
-
可能是空白
$_SESSION['account']变量的情况吗?或者它可能不包含预期值? -
啊,是的,你可能是对的!你提示我搜索代码的其余部分,我发现了
$_SESSION['account'] = Array();(虽然它应该稍后填充帐户信息,也许这没有发生)。那么上述代码的其余部分是否相当健壮? -
如果是这种情况,您还可以在 if 语句中添加另一种情况。 if(!isset($_SESSION['account']) || empty($_SESSION['account'])) 这将检查 $_SESSION['account'] 变量是否也不包含空数组。
标签: php session session-variables