在PHP中重置cookie生命周期和会话ID

时间:2012-05-07 11:45:42

标签: php session-cookies

当用户使用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创建的逻辑?

非常感谢你的帮助

2 个答案:

答案 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