session_destroy()不能立即生效,该怎么解决

WBOY
发布: 2016-06-13 11:59:02
原创
1127 人浏览过

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.php



b.php
<br /><?php<br />session_start();<br />$_SESSION = array();<br />session_destroy();<br />var_dump($_SESSION['name']);<br />?><br />
登录后复制

------解决方案--------------------

引用:
Quote: 引用:

那这样页面其实一直都没有结束,当然当前的session就不会消失了。

connection_aborted()这一句可以检查客户端是否断开,但是它执行需要在页面输出内容,所以添加了ob_flush();flush();
问题是这两句会导致销毁session的那个页面无法正常执行,也就是必须手动刷新才能销毁session


所以,有没有其他办法,在客户端断开时关闭这个循环。或者有没有其他办法,正常执行销毁session的那个页面。
出现这样的问题是ob_flush();flush();的问题吗?要怎么办呢?

我这么做就是为了防止用户长时间不登陆被踢下线的保活,还有其他办法吗?


你的页面一直未结束,当前页面的session一直未更新到文件。这就是session_destroy()不能立即生效的原因。
在session_destroy(); 后面加 session_write_close(); 就可以解决这个问题了。
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!