我遇到了会话变量的问题。问题是,使用会话变量,经过一段时间后,如果用户刷新页面或类似的内容,它将开始显示通知,说明存在一些未定义的索引。
现在我还想使用会话变量但是如何让会话持续更长时间?我听说开发人员可以使用类似令牌的东西,这样即使用户闲置一两天甚至更长时间,当他们刷新页面或导航到另一个页面时,也不会出现任何未定义的索引通知在屏幕上。
有没有人有使用令牌的例子?
由于
答案 0 :(得分: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;
}
现在,我不建议您将会话的生命周期设置为两到三天。相反,您应该查看setting cookies并定义每个内容和生命周期:
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;
}