解决方案 »

  1.   

    关闭浏览器 session id 就失效了,至于垃圾如何处理,等清洁工来了就知道了
      

  2.   

    默认情况下,你关闭浏览器,服务器端会自动销毁对应的session_id如果你想用页面来控制的话,用js的onunload事件。但非正常关闭就不好控制了。
      

  3.   

    楼主肯定是问非正常情况下退出也要重置用户表中对应的用户状态?那个难度有点大,以前也有碰到类似的情况,可以使用定时任务扫描session_id,然后操作数据库修改对应用户的状态。也可以使用uchome的机制,去看看它的源码参考下。
      

  4.   

    默认情况下,关闭浏览器session就失效了。
      

  5.   

    首先你要清楚session的机制。 session的标识靠session id, 浏览器发送session id到服务器,服务器才能根据session id从本地存储中拿到对应浏览器的session。session id常见实现方式是透过cookie或者url参数传递,默认情况下,session id的cookie在浏览器关闭就失效了,url的话,一般在url上可以看到 ...&sid=fdafoeijadlf之类的东西,那个就是session id。服务器对保存在本地的session数据有时限的控制,默认半小时,即半小时不访问对应的cookie,服务器端就会清理掉该session。因此销毁session设计两个方面,1、删除服务器上的session数据,2、干掉session id。回到楼主的问题,默认情况下,php的session id透过cookie传递,lz可以打开firebug或者ie的f12工具,查看cookie,可以看到SESSIONID一项,并注意这一项的失效时限就是0应该,即浏览器关闭失效。那么浏览器程序本身在关闭的时候会干掉这个cookie,即session id没有了。下次访问,服务器就会设置一个新的session id。如果半小时不刷新,服务器自身也会删除session的数据,那么就算你不关闭浏览器,再次访问页面,session id是发过去 ,但是服务器上的session数据没了,session也失效。
    回答比较乱,楼主将就看吧! 上边提到的很多是假设默认配置没改的情况。如果是linux服务器,可以看看/tmp目录,会看到很多文本文件,那些就是session数据。浏览器的调试工具的cookie项可以看到session id。 如果session id是通过url改写实现而不利用cookie,那么直接观察url就行了。
      

  6.   

    csdn的cookie,很明显,可以看到cookie中的session id
      

  7.   

    关闭 IE 会话就会失效,这个是自动的,但是不会马上生效。等Apache 来清除垃圾时,才算真正失效。