PHP-php实现一账号多地点或终端同时登陆时的提醒功能

PHP-php实现一账号多地点或终端同时登陆时的提醒功能

浮生未歇 发布于 2016-12-15 字数 72 浏览 1271 回复 4

php如何实现像QQ一样同一个账号在多个地点或终端同时登陆时提醒功能?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

灵芸 2017-09-11 4 楼

用户每次登陆将登陆ip记录在数据库,同时也将ip记录在session。

ajax 定时检测 数据库中的ip与session中的ip是否相等,不相等时弹出提示框,退出等操作。

不想用ajax,那么就得在用户请求中 先判断。

虐人心 2017-08-16 3 楼

存在一些问题,原因就是受HTTP协议短连接的限制。
你看能不能换个设计思路:一个帐号,永远只能在一台电脑上登录。如果在电脑a上登录了,然后在电脑b上登录,那么电脑a上的就自动退出。 然后再提醒。
这样在程序里这样实现:
在用户表里增加一个字段:last_session_id 之类的。这个字段的命名方式随便可以,然后用户登录的时候,就把这个字段更新成当前访问的session_id。 这样程序在判断用户登录状态的时候,验证一下,用户访问的session和数据库记录的last_session_id 是否一致,(也可以把last_session_id同时放到mamcache里,这样就不用每次刷新一个页面就得去查询一次做验证),如果一致,就是当前最后一次登录行为。如果不一致,就判断用户为未登录。

想挽留 2017-07-21 2 楼

其实这个问题有两方面需要回答。
第一、如何判断一个用户在两处登录,第二、登录后的提醒。我对这两个问题用我的观点回答一下

如何判断一个用户在两处登录:
PHP-php实现一账号多地点或终端同时登陆时的提醒功能
在客户端种Cookie,然后把这个Cookie值存DB或者是Cache,虽然可以实现部分功能,但是还有一个关键需要考虑的就在用户点浏览器关闭后(即非正常退出),用户再次登录或者是在其它地方登录,也还是登录不了的。所以这个就是比较难解决,因为HTTP是无状态协议,即客户端的和服务端的请求完成后就互相没有关系了。所以这一点没有什么了的解决方案。

另外一个就是登录后的提醒:这个就是说当用户在其它地点登录后如果不是不让登录,而是提醒之前登录过的用户,那就是需要服务器端推送消息到客户端,可以参考一下 @新浪微博的页面自动提示有新消息或通知的功能是如何实现的?@请教B/S模式下实现服务端消息推送到浏览器

浮生未歇 2017-01-11 1 楼

比如你的Model层已经有一个用于验证用户是否已经登陆的方法,那么在这个方法里有如下代码
if( $row['lastCookie'] != $_COOKIE['mycookie'] )
{
//登陆的时候写一个随机值到lastCookie,当然$row可以是DB,也可以是cache,如果上一次的lastCookie不等于你的浏览器端的mycookie,就可以理解为有其他点登陆了帐号。你应该有更多的条件来约束它
}