很简单,我不明白为什么在关闭会话并向其他用户开放时它不会进入IF内部。
if (!isset($_SESSION['Username'])) {
$_SESSION['Username'] = $_SESSION['MM_Username'];
}
即使我退出,也只在第一次工作并保持相同的名称。我也关闭了浏览器,我总是得到同样的名字。我认为$_SESSION['Username']
会在会议结束后被销毁。
答案 0 :(得分:4)
您发布的代码未启动会话:
session_start();
if (!isset($_SESSION['Username'])) {
$_SESSION['Username'] = $_SESSION['MM_Username'];
}
您需要告诉apache使用session_start启动会话变量,否则您无法访问其中的任何内容。
此外,从内存中,您需要在脚本顶部发布此内容(在将任何数据发送给用户之前) - 尽管这可能无关紧要,但我现在无法回想起来。如果该陈述不正确,请编辑:)
编辑:如果你已经得到了它并且它正在运行,那么在将用户注销时应使用session_destroy以确保从会话中删除任何数据。这意味着你不必担心关闭浏览器或类似的东西:
// your logout script... and
session_destroy();
答案 1 :(得分:1)
如果您想确保在用户退出时会话结束,请使用http://php.net/manual/en/function.session-destroy.php 如果您假设会话将在一定时间后或用户关闭浏览器选项卡时结束,则可能会出现意外结果。
答案 2 :(得分:0)
如果要取消设置所有$ _SESSION变量,可以执行以下操作:
$_SESSION = array();