无法销毁会话对象

时间:2013-09-21 20:12:41

标签: php session

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

我的会话处于有效状态,当我尝试使用logout方法销毁它时,我得到了

warning: session_destroy(): session object destruction failed

我的症状似乎与this问题中的症状非常相似,遗憾的是,这些问题没有答案。此外,当我尝试注销几次时,它会成功破坏会话。有时它需要2次注销5次它从来没有相同的数量,但它也从来没有从第一次尝试中销毁它。我觉得这很尴尬,有人可以给我一些建议吗?

2 个答案:

答案 0 :(得分:0)

试试这个解决方案:

<?php 

session_start(); 
$_SESSION = array(); 

if (isset($_COOKIE[session_name()])) { 
   setcookie(session_name(), '', time()-42000, '/'); 
} 
session_destroy(); 
?>

答案 1 :(得分:0)

我刚刚发现了问题所在,而且看起来非常奇怪和不合逻辑。

My Logout按钮是一个锚标记,我正在玩我的网站测试内容,我开始点击标签,看看我可以在普通页面中关注哪些元素。我注意到菜单通道中的所有按钮都可以聚焦,除了注销按钮,这是由于缺少href属性,所以我添加了一个空的href属性,以便它可以通过Tab键聚焦。显然一个空的href标签重定向到根(我猜这是由于我使用的<base>标签)。因此,每次我点击退出按钮时,我都被重定向到主页面(我最初没有注意到这一点,因为我实际上是在那个页面上,大声笑),这显然妨碍了从ajax中摧毁会话通过单击相同的按钮发送的请求。我的假设是php没有破坏会话对象因为它正在使用,加载我自己重定向的页面,有时登出工作,因为重定向很慢,并且在php开始创建之前及时执行ajax调用新页面。

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