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