session_destroy()不能立即生效在html里用链接到一个php页面,该php页面会销毁session,但是当打开该页面的时候session还存在,只有再刷新一次该php页面才能销毁session。该页面就两条语句$_SESSION = array();session_destroy(); session_start()已经开启。请问这是什么情况------解决方案--------------------你在 B页面中执行 session_destroy(); 前 session 自然是存在的,否则就没必要 session_destroy(); 了你只在重入B页面(比如刷新)才会发现 session 没有了因为对用户而言, session_destroy() 只是发送注销 cookie 中的 sessionid 的指令 ------解决方案--------------------a.phpsession_start();$_SESSION['name'] = "kobe";?>se2b.phpsession_start();$_SESSION = array();session_destroy();var_dump($_SESSION['name']);?>------解决方案-------------------- 引用: Quote: 引用: 那这样页面其实一直都没有结束,当然当前的session就不会消失了。 connection_aborted()这一句可以检查客户端是否断开,但是它执行需要在页面输出内容,所以添加了ob_flush();flush();问题是这两句会导致销毁session的那个页面无法正常执行,也就是必须手动刷新才能销毁session所以,有没有其他办法,在客户端断开时关闭这个循环。或者有没有其他办法,正常执行销毁session的那个页面。出现这样的问题是ob_flush();flush();的问题吗?要怎么办呢?我这么做就是为了防止用户长时间不登陆被踢下线的保活,还有其他办法吗? 你的页面一直未结束,当前页面的session一直未更新到文件。这就是session_destroy()不能立即生效的原因。在session_destroy(); 后面加 session_write_close(); 就可以解决这个问题了。