无法销毁会话对象


failed to destroy session object

我发现的有关此错误消息的所有内容都说要么没有启动会话,要么我没有权限,不幸的是,这两种情况都不是。

我的会话处于活动状态,当我尝试以logout方法销毁它时,我得到

warning: session_destroy(): session object destruction failed

可悲的是,我的症状似乎很像这个问题中的症状,没有答案。此外,当我尝试注销几次时,它会成功销毁会话。有时需要 2 次注销,有时需要 5 次,它永远不会相同,但它也永远不会从第一次尝试开始破坏它。我觉得这真的很尴尬,有人可以给我一些建议吗?

试试这个解决方案:

<?php 
session_start(); 
$_SESSION = array(); 
if (isset($_COOKIE[session_name()])) { 
   setcookie(session_name(), '', time()-42000, '/'); 
} 
session_destroy(); 
?>

我刚刚发现了问题所在,这似乎非常奇怪和不合逻辑。

我的

注销按钮是一个锚标签,我正在玩我的网站测试内容,我开始点击选项卡以查看我可以在普通页面中关注哪些元素。我注意到菜单通道中的所有按钮都可以聚焦,除了注销按钮,这是由于缺少 href 属性,所以我添加了一个空的 href 属性,以便可以通过 Tab 键聚焦它。显然,一个空的href标签重定向到根目录(我想这是由于我使用的<base>标签)。因此,每次我单击注销按钮时,我都会被重定向到主页(起初我没有注意到这一点,因为我实际上在该页面上,哈哈对),这显然妨碍了通过单击同一按钮发送的 ajax 请求中销毁会话。我的假设是 php 未能销毁会话对象,因为它正在使用中,加载了我重定向到的页面,有时注销有效,因为重定向很慢并且 ajax 调用在 php 开始创建新页面之前及时执行。

我已经删除了 href 属性,现在一切正常。.我想请你评论我是对还是错,并可能给出正确的答案,谢谢!