0

我发现的有关此错误消息的所有内容都表明要么没有会话开始,要么我没有权利,不幸的是,这些都不是。

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

warning: session_destroy(): session object destruction failed

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

4

2 回答 2

0

试试这个解决方案:

<?php 

session_start(); 
$_SESSION = array(); 

if (isset($_COOKIE[session_name()])) { 
   setcookie(session_name(), '', time()-42000, '/'); 
} 
session_destroy(); 
?>
于 2013-09-21T20:18:55.717 回答
0

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

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

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

于 2013-09-21T21:08:14.050 回答