php利用session怎么判断用户已离线
4个回答
展开全部
方法有好多种,但应该都跟心跳请求类似。
首先用户打开一个页面后,页面里面会有段js脚本来反复请求一个地址,即判断用户是否在线的地址(跟新浪微博隔一段时间请求一个地址查看是否有新消息类似)
比如判断页面为A,打开的页面为B ,则B 内的js脚本以ajax请求的方式每隔1分钟来访问A,A可以记录下最后一次的请求时间,然后你就可以拿这个最后一次请求的时间来判断用户是否离线,比如B每隔1分钟发送一次请求,如果最后活动时间与当前时间相差两分钟,就可以认为用户已离线。
还有一种方法,就是利用js的onunload事件
当用户关闭浏览器的时候,可以用onunload发送一个请求,注销掉session,或者将用户状态置为离线,都可以,不过没有上面靠谱就是,因为F5刷新页面也同样触onunload事件
方法还有很多,结合你需要实现的功能和业务,多想想就出来了
首先用户打开一个页面后,页面里面会有段js脚本来反复请求一个地址,即判断用户是否在线的地址(跟新浪微博隔一段时间请求一个地址查看是否有新消息类似)
比如判断页面为A,打开的页面为B ,则B 内的js脚本以ajax请求的方式每隔1分钟来访问A,A可以记录下最后一次的请求时间,然后你就可以拿这个最后一次请求的时间来判断用户是否离线,比如B每隔1分钟发送一次请求,如果最后活动时间与当前时间相差两分钟,就可以认为用户已离线。
还有一种方法,就是利用js的onunload事件
当用户关闭浏览器的时候,可以用onunload发送一个请求,注销掉session,或者将用户状态置为离线,都可以,不过没有上面靠谱就是,因为F5刷新页面也同样触onunload事件
方法还有很多,结合你需要实现的功能和业务,多想想就出来了
展开全部
其实HTTP协议是无连接的,数据交换完毕就断开了,理论上服务器上无论用什么语言写的程序,都不可能知道客户端的用户是否在线。
用session可以简单实现,但是也不十分准确,有局限性
用户登录后将信息写入session,session 设置过过期时间,然后验证用户session就行了
用数据库太麻烦
用session可以简单实现,但是也不十分准确,有局限性
用户登录后将信息写入session,session 设置过过期时间,然后验证用户session就行了
用数据库太麻烦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该这样做做:在数据库的user表或者其他表,加上一个标志位字段state,为bit类型;
用来记录登入或者没有登入;登入的state为1,否则为0;因此你读取state列来判断
用来记录登入或者没有登入;登入的state为1,否则为0;因此你读取state列来判断
追问
你说的方法我用过,但是如果用户直接关掉浏览器,数据库的记录永远是登陆。
追答
加上判断被。设置session["user
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在有效期内,sessionid是不是被用过。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询