一般来说不使用 
session_start();
session_destroy();
是不会清除session的(删除临时文件)不管是否过期,只要还开着浏览器窗口,而且没使用session_destroy(),session都是有效的。
关闭浏览器窗口后session就无效了,但临时文件还存在。

解决方案 »

  1.   

    那些文件即"sess_".$PHPSESSIONID除了你用session_destroy()删除。
    一般系统是在一段时间里自动随机清除的。随机数可以在php.ini中设。
      

  2.   

    onunload函数就是在浏览器关闭时触发的事件:
    <body onbeforeunload="window.open('loginout.php')">loginout.php
    <?
    session_start();
    session_destroy();
    ?>
      

  3.   

    是session.cookie_lifetime 吗?可我设了以后只会session过期,而不是删除那些文件
      

  4.   

    我不知你们是怎么样的
    不过,我的系统在session_destroy()时,会把相应的变量删除!
      

  5.   

    session_destroy是会删除session文件,但是如果用户下线,是直接关掉浏览器,或关机了掉电了等等,没有执行session_destroy(),那session文件在过期后有什么变化?会自动删掉?时间在那里设?
      

  6.   

    http://expert.csdn.net/Expert/topic/1174/1174791.xml
      

  7.   

    1、session文件由系统删除,php.ini中session.gc_maxlifetime = 1440表示session失效后1440秒以后将删除权交给操作系统
    2、session.cookie_lifetime 只是表示存储与客户端cookie中的session号的有效时间
    3、执行session_destroy()只是声明本次session会话结束
    4、所以利用session文件来判断用户是否在线是不可靠的
      

  8.   

    如果 我设session.gc_maxlifetime = 0,
    session.cookie_lifetime=600,(即10分钟后拥护不操作则删除session文件)
    每次用户登陆,我将他的sessionid记录在数据库,
    然后有程序检查数据库中的sessionid对应的文件是否存在,来判断是否有人吊线并删除,
    这样不是也挺好?省的每页都要加一个修改数据库以更新用户时间浪费资源。
    我感觉这样思路还是可以的。不管怎样,截贴了,谢谢大家