0

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

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

有没有人有任何使用令牌的例子?

谢谢

4

1 回答 1

1

会话变量用于会话 - 默认情况下,它们的生命周期很短(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;
}
于 2012-09-09T20:12:45.713 回答