php利用session怎么判断用户已离线

 我来答
linxiang4200
2013-02-28 · TA获得超过514个赞
知道小有建树答主
回答量:398
采纳率:0%
帮助的人:265万
展开全部
方法有好多种,但应该都跟心跳请求类似。
首先用户打开一个页面后,页面里面会有段js脚本来反复请求一个地址,即判断用户是否在线的地址(跟新浪微博隔一段时间请求一个地址查看是否有新消息类似)
比如判断页面为A,打开的页面为B ,则B 内的js脚本以ajax请求的方式每隔1分钟来访问A,A可以记录下最后一次的请求时间,然后你就可以拿这个最后一次请求的时间来判断用户是否离线,比如B每隔1分钟发送一次请求,如果最后活动时间与当前时间相差两分钟,就可以认为用户已离线。

还有一种方法,就是利用js的onunload事件
当用户关闭浏览器的时候,可以用onunload发送一个请求,注销掉session,或者将用户状态置为离线,都可以,不过没有上面靠谱就是,因为F5刷新页面也同样触onunload事件

方法还有很多,结合你需要实现的功能和业务,多想想就出来了
gao1881001
2013-02-28 · TA获得超过215个赞
知道小有建树答主
回答量:314
采纳率:0%
帮助的人:181万
展开全部
其实HTTP协议是无连接的,数据交换完毕就断开了,理论上服务器上无论用什么语言写的程序,都不可能知道客户端的用户是否在线。
用session可以简单实现,但是也不十分准确,有局限性
用户登录后将信息写入session,session 设置过过期时间,然后验证用户session就行了

用数据库太麻烦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
437384801
2013-02-28 · TA获得超过1867个赞
知道小有建树答主
回答量:1299
采纳率:0%
帮助的人:501万
展开全部
应该这样做做:在数据库的user表或者其他表,加上一个标志位字段state,为bit类型;
用来记录登入或者没有登入;登入的state为1,否则为0;因此你读取state列来判断
追问
你说的方法我用过,但是如果用户直接关掉浏览器,数据库的记录永远是登陆。
追答
加上判断被。设置session["user
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wifx999
2013-02-28
知道答主
回答量:13
采纳率:0%
帮助的人:4.1万
展开全部
在有效期内,sessionid是不是被用过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式