我有一个'loginStatus'会话变量,它在第一页加载时设置。当第一次设置'loginStatus'时,我有一个if / else首次回复'设置'对浏览器的评论。 '第一次'设置'永远不会出现!我已经清除了缓存,我已经尝试在我的Netbeans开发环境之外的浏览器窗口中导航到index.php页面 - 无关紧要。就好像会话在我的localhost Web服务器上永久保持活跃状态。
这是第一次加载页面时检测未初始化的“loginStatus”会话变量的代码,并且只创建/初始化会话变量一次。
if ( isset($_SESSION['loginStatus']))
{
// we get here ONLY if the 'loginStatus' session variable has already been
// created for this user's session.
$_SESSION['loginStatus'] = "loginStatus already set!";
echo '<br />Just set the loginStatus to: ' . $_SESSION['loginStatus'] . '<br /><br />';
}
else
{
// we only get here the first time this is sent by the server
// to the user's browser -- so we need to create the 'loginStatus' session
// variable because the user just came to our site
// and has not yet logged in.
$_SESSION['loginStatus'] = "First-time initialization of loginStatus";
echo '<br />Just set the loginStatus for the first time!<br /><br />';
}
我从不在浏览器窗口中看到“只是第一次设置loginStatus!”
我在浏览器窗口中看到的只是:“只需将loginStatus设置为:loginStatus已设置!”
换句话说 - 首次加载页面时,isset()错误地返回 true !
当我第一次在浏览器中加载页面时,我认为没有理由认为已经存在神奇的会话变量!
虽然我在编写代码时已经多次加载了上面的页面,但我理解当你离开最后一页时会话被破坏了。那么,为什么我的$ _SESSION ['loginStatus']变量像一个已经破旧的亲戚一样闲逛呢?
答案 0 :(得分:1)
会话在php.ini文件中通过设置规则(到会话GC)时被破坏。当您关闭浏览器或浏览其他页面时,这不一定会发生。 阅读php.net中的会话手册,并将会话规则设置为适合您的最佳方式。
例如,在高安全性站点上,我会给会话一段时间。意味着,如果用户没有在该时间限制内向服务器发出请求的操作,则会话将过期。
答案 1 :(得分:-1)
不确定, 但可能是因为您已将此值保存在Cookie中,
尝试清除Cookie,然后重新加载页面