目前我一直在$ _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中超时吗?
答案 0 :(得分:1)
如果可以使用:
if (! isset($_SESSION['account']) && !empty($_SESSION['account'])):
// User not logged in, show login page
else:
// User is logged in, show account page
endif;
所以这不会通过2个条件,
如果未设置会话
如果设置了会话,但是空白了!
仍然存在无效值的情况,例如,用户名来到xyz
并且您没有任何匹配xyz
的记录,那么它可能是一个没有记录的情况,因此它可能是也是空白!
不仅仅是这些陈述,您应该进一步检查$_POST
中的数据是否与系统中的任何记录匹配,并且只有在确认匹配后,您应该将其设置为$_SESSION
。
这些应该涵盖你的大多数情况,使逃跑更少!