如何为会话变量添加令牌


How to add tokens for a session variable?

我的会话变量有问题。问题是,对于会话变量,在一段时间后,如果用户刷新页面或类似的内容,它将开始显示通知,说明存在一些未定义的索引。

现在我仍然想使用会话变量,但我如何才能让会话持续更长时间?我听说我们开发人员可以使用令牌之类的东西,这样即使用户空闲一两天甚至更长时间,当他们刷新页面或导航到另一个页面时,屏幕上也不会出现任何未定义的索引通知。

有人有使用代币的例子吗?

感谢

会话变量用于会话-默认情况下,它们的使用寿命很短(20分钟左右)。

这意味着,当会话超时时,在尝试使用会话变量时,您将开始看到不再定义的会话变量的通知(至少在启用了通知的情况下进行错误报告)。

通常,您会检查会话变量是否存在,如果不存在则进行处理:

if( ! isset( $_SESSION['my_var'] ) )
{
  // This session doesn't exist anymore - I'd better head over to the start page...
  header('Location: index.php');
  exit;
}

现在,我不建议您将会话的生存期设置为两三天。相反,你应该看看设置cookie,并定义其中每一个的内容和寿命:

setcookie('my_var', 'My Value', time() + 60 * 60 * 24 * 3); // a cookie lasting three days

不过,如果你不检查cookie的存在,你会在第四天收到同样的通知:

if( ! isset( $_COOKIES['my_var'] ) )
{
  // This cookie doesn't exist anymore - I'd better head over to the start page...
  header('Location: index.php');
  exit;
}