我有一个登录页面,涉及销毁 session 并启动新 session 。 Chrome 和 Firefox 之间的结果非常不一致。
我正在使用以下方式清除 session :
session_unset();
session_destroy();
session_start();
$_SESSION = array();
但是 session 中的变量似乎仍然存在,直到我刷新页面然后它们就消失了。除此之外,我的第二个问题是从该登录页面调用的 ajax 页面上关键的 $_SESSION 变量是不同的。这会在 ajax 页面上造成大问题和不一致的结果。
销毁 session 并使用可用于 ajax 页面的新变量设置它的最佳方法是什么?
最佳答案
如果您正在使用 session 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。
新 session 将在下一个请求时创建。
PS:手册指出:
Only use
session_unset()
for older deprecated code that does not use$_SESSION
.
关于PHP 和 AJAX session : Session variables different on AJAX page than on page called from,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5868651/