如何清除会话 cookie
How to clear a session cookie
我对会话管理很困惑。我正在使用 PHP,当用户单击登录按钮时,我调用 session_start()
作为我脚本中的第一行。结果是客户端上的一个名为 PHPSESSID 的 cookie 具有唯一值。这似乎符合我的预期。
我感到困惑的地方是注销过程。当用户点击 'log out' 时,我 call session_unset();
然后 session_destroy();
。我的期望是这应该清除 cookie,但没有。即使我在浏览器中关闭选项卡,当我通过新选项卡返回站点时,旧的 cookie 仍然存在,还有旧的会话 ID 值。这意味着会话 ID 正在从一个会话到下一个(及以后)重复使用。即使我再次通过登录过程,会话 ID 也保持不变。这不可能是正确的,对吧?
在有些绝望的尝试中,我尝试使用此功能来清除 cookie 本身,但它似乎无济于事:
// destroy the cookies
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
我是不是误解了这个过程的工作原理?或者我做错了什么(或两者都有!)。感谢您的任何建议或参考。
您还需要取消设置会话变量并终止 cookie:
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
$params = session_get_cookie_params();
setcookie(session_name(), '', 1, $params['path'], $params['domain'],
$params['secure'], isset($params['httponly']));
}
此问题已得到广泛回答 here。
它可能对你有帮助
session_start();
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
return true;
} else {
return false;
}
session_destroy();
header('Location:');
exit;
您还必须在注销页面中启动会话 (session_start
)..
你做到了吗?
我对会话管理很困惑。我正在使用 PHP,当用户单击登录按钮时,我调用 session_start()
作为我脚本中的第一行。结果是客户端上的一个名为 PHPSESSID 的 cookie 具有唯一值。这似乎符合我的预期。
我感到困惑的地方是注销过程。当用户点击 'log out' 时,我 call session_unset();
然后 session_destroy();
。我的期望是这应该清除 cookie,但没有。即使我在浏览器中关闭选项卡,当我通过新选项卡返回站点时,旧的 cookie 仍然存在,还有旧的会话 ID 值。这意味着会话 ID 正在从一个会话到下一个(及以后)重复使用。即使我再次通过登录过程,会话 ID 也保持不变。这不可能是正确的,对吧?
在有些绝望的尝试中,我尝试使用此功能来清除 cookie 本身,但它似乎无济于事:
// destroy the cookies
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
我是不是误解了这个过程的工作原理?或者我做错了什么(或两者都有!)。感谢您的任何建议或参考。
您还需要取消设置会话变量并终止 cookie:
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
$params = session_get_cookie_params();
setcookie(session_name(), '', 1, $params['path'], $params['domain'],
$params['secure'], isset($params['httponly']));
}
此问题已得到广泛回答 here。
它可能对你有帮助
session_start();
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
return true;
} else {
return false;
}
session_destroy();
header('Location:');
exit;
您还必须在注销页面中启动会话 (session_start
)..
你做到了吗?