关闭浏览器的时候调用javascript:onunload()事件,该事件再向其他的叶面启用撤销 session的 方法.

解决方案 »

  1.   

    有没有具体代码(javascript部分)可以分享一下?一定给你加分!
      

  2.   

    哦..你可以设置一个失效时间..每次用户Post就重设一下Cookie以延长..BTW.Cookie很有用.最好cookie的数据要加密.比如PHP中的crypt
      

  3.   

        用javascript不保险的,因为如果是死机、停电或者使用强制对出就无法即或javascript了
    最好是在服务器端解决。
    怎么解决我就不懂了,请教高手吧。
      

  4.   

    首先明确这一点,一个用户的会话具有一个会话标识,只有当用户向Server发起请求的时候,这个会话标识才被你的解释程序所应用。
    所以,你需要做的是通过数据库建立用户ID和会话标识之间的对应关系,这样,利用一个唯一的会话标识,你可以标定一个特定的用户。
    当用户超时之后再向Server发出请求时,你可以检测到这个超时,这样返回超时错误和清除上面提及的关联关系即可。
    超时的处理同样可以适用于任何意外中断地用户重新登陆的状况。不可能实时检测到用户何时下线的,如果利用HTTP协议的话。上面所说的是对下线检测的替代方案,大部分PHP站台都只能使用上述的原理来完成登录用户确认。为了处理未注册用户,你需要利用永久性的Cookie,自动给每一个浏览者分配一个GUID。于是,他们将被你利用该GUID和SessionID之间的关联关系进行跟踪。
    但,这种方案是不稳固的,用户可以轻易删除掉Cookie来取消那样的关联。对于注册用户的会话管理,则用上面的方法即可。
      

  5.   

    谢谢你"jy",我是一个刚刚学习PHP的新手,能和你交个朋友吗?我的email是[email protected]
      

  6.   

    >如何利用session测试用户已经下线?如果直接关闭窗口怎么办?
    if(其未操作的时间>=expiretime){
      已经下线;
    }else{
      在线;
    }
    当然,这样的话,用户的每一次操作都得记录下来,以便计算未操作的时间.