繁体   English   中英

会话变量已设置

[英]session variable already set

我有一个'loginStatus'会话变量,该变量在首页加载时设置。 当第一次设置“ loginStatus”时,我有一个if / else向浏览器回显“第一次设置”的注释。 从未出现“首次设置”! 我已经清除了缓存,尝试在Netbeans开发环境之外的浏览器窗口中导航到index.php页面-没关系。 好像该会话在我的本地主机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']变量像一个已经不受欢迎的亲戚一样徘徊?

会话在php.ini文件中设置的规则(以及对会话GC设置的规则)时被销毁。当您关闭浏览器或浏览到其他页面时,不一定发生这种情况。
阅读php.net中的会话手册,并设置适合您的最佳会话规则。

例如,在高安全性站点上,我给会话分配了几分钟的时间。 意味着,如果用户在该时限内未执行任何向服务器发出请求的操作,则该会话将过期。

不确定,但这可能是因为您已将此值保存在Cookie中,

尝试清除Cookie,然后重新加载页面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM