我有一个登录页面而不是破坏会话并开始一个新会话。我在Chrome和Firefox之间的结果非常不一致。
我正在使用以下方式清除会话:
session_unset();
session_destroy();
session_start();
$_SESSION = array();
但是在我刷新页面然后它们消失之前,会话中的变量似乎仍然存在。我的第二个问题是,在此登录页面调用的ajax页面上,关键的$ _SESSION变量是不同的。这会在ajax页面上造成大问题和不一致的结果。
销毁会话并使用可供ajax页面使用的新变量设置会话的最佳方法是什么?
答案 0 :(得分:2)
如果你正在使用会话cookie,你也必须“删除”它们。
$cookie_params = session_get_cookie_params();
setcookie(
session_name(),
false,
strtotime('2000-01-01')
$cookie_params['path'],
$cookie_params['domain'],
$cookie_params['secure']
);
当然,在您发送回复之前,浏览器不会删除cookie 新会话将在下一个请求中创建。
PS:手册说明:
仅对不使用
session_unset()
的较旧弃用代码使用$_SESSION
。
答案 1 :(得分:1)
我找到了:
session_unset();
session_destroy();
session_start();
$_SESSION = array();
非常不可预测,并且在浏览器之间产生了不同的结果,这对于PHP来说是不寻常的。
要解决此问题,我只需将其替换为:
session_start();
$_SESSION = array();
我知道这并不能完全清除并替换会话,但我真正需要的是要清除的会话。会话具有相同的session_id这一事实在我的场景中并不重要。
希望这可以帮助一些人和我一样的母马!