我对会话管理很困惑。我使用的是PHP,当用户点击登录按钮时,我的电话号码是session_start()
作为我的脚本中的第一行。这样做的结果是客户端上一个名为PHPSESSID的cookie具有唯一的值。这似乎符合我的预期。如何清除会话cookie
我很困惑的地方就是注销过程。当用户点击'注销'时,我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";
}
我是不是误解这个过程是如何工作的?或者我做错了什么(或两者都有!)。感谢您的任何建议或参考。
你必须在注销页面开始会话('session_start')..你做了吗? – phpfresher 2015-03-03 04:41:33
Cookie必须通过将cookie设置为前一次销毁。 – arunrc 2015-03-03 04:42:42
@phpfresher - 就是这样。我没有意识到我需要这样做。如果您发布答案,我会接受它。谢谢! – Alex 2015-03-03 04:43:27