如何判断PHP会话是否超时



目前我一直在测试$_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;

所以这不会通过两个条件,

  1. 如果会话未设置

  2. 如果会话已设置,但为空!

仍然存在无效值的情况,例如,用户名来到xyz,你没有任何匹配xyz的记录,那么它可能是一个没有获取记录的情况,因此它也可能是空白的!

所以不仅仅是这些语句,您应该进一步检查$_POST中的数据是否与系统中的任何记录匹配,并且只有在匹配确认之后,您应该将其设置为$_SESSION

这些应该涵盖大多数情况,使escape更少!

最新更新