所以,如果有人登录或注销,我一直在尝试在我的页面中重新生成会话ID。我运行这段代码:
public static function regenerateSession() {
$_SESSION = array();
session_regenerate_id( true );
return true;
}
我检查了我的php.ini,我的session.cookie_secure被注释掉了。我取消注释它,我把它改为0,重新启动apache但没什么新东西。有没有人知道我做错了什么?
更新1:
我也试过这段代码:
public static function regenerateSession() {
$_SESSION = array();
setcookie(session_name(), '', time() - 42000);
session_regenerate_id( true );
return true;
}
但效果相同......
更新2
我也试过了:
public static function regenerateSession() {
$_SESSION = array();
session_unset();
setcookie(session_name(), '', time() - 42000);
session_regenerate_id( true );
return true;
}
但仍然没有
更新3
我也试过了:
public static function regenerateSession() {
setcookie(session_name(), '', time() - 42000);
session_destroy();
$_SESSION = array();
session_start();
session_regenerate_id( true );
return true;
}
什么。旧的价值观仍然与新的价值观保持一致
答案 0 :(得分:0)
猜测一下,浏览器发送两个会话cookie,PHP只是将两个找到的会话合并在一起?
最好的方法是将旧会话cookie设置为零生命周期,以便客户端删除cookie并且不再发送它。
如果需要,销毁会话,但如果要完全删除会话,则需要执行所有三项操作
setcookie(session_name(), '', time() - 42000);
session_destroy();
$_SESSION = array();
session_start();
另请查看类似问题的答案:https://stackoverflow.com/a/758825/1234469