当用户使用PHP登录时,我正在尝试重置会话cookie及其生命周期。 这听起来很微不足道,但我仍然在努力做到这一点。
当页面加载时,用户可能会或可能不会有cookie。如果他有一个,我想删除它并重置sessionId,如果不是,我只会给他一个有正确生命的新的。由于我正在使用的PHP版本,我无法使用session_status()
。
这是我想出的,但是当用户已经拥有会话cookie时它不起作用。
if (isset($_COOKIE[session_name()])) setcookie(session_name(), false);
session_set_cookie_params(2678400); // sets cookie life to one month
session_start();
// do stuff
当用户登录时,通常会删除旧Cookie,但session_start()
不会传递新Cookie。有没有办法强制交付新的cookie而不必手动实现会话ID创建的逻辑?
非常感谢你的帮助
答案 0 :(得分:1)
您不必在PHP端销毁/重启会话,只需向客户端发送新的cookie即可。只需再次调用setcookie()
(使用现有的会话ID),这应该可以解决问题。
答案 1 :(得分:0)
您可以使用session_destroy()
函数销毁与当前会话相关联的所有数据,并使用setcookie()
函数设置过去的Cookie过期日期,以触发浏览器中的删除机制。< / p>
类似的东西:
if (isset($_COOKIE[session_name()])) setcookie(session_name(), false);
session_destroy();
setcookie(session_name(), "", time() - 3600);
);
session_start();
// do stuff