PHP-php实现一账号多地点或终端同时登陆时的提醒功能
php如何实现像QQ一样同一个账号在多个地点或终端同时登陆时提醒功能?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
php如何实现像QQ一样同一个账号在多个地点或终端同时登陆时提醒功能?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
用户每次登陆将登陆ip记录在数据库,同时也将ip记录在session。
ajax 定时检测 数据库中的ip与session中的ip是否相等,不相等时弹出提示框,退出等操作。
不想用ajax,那么就得在用户请求中 先判断。
存在一些问题,原因就是受HTTP协议短连接的限制。
你看能不能换个设计思路:一个帐号,永远只能在一台电脑上登录。如果在电脑a上登录了,然后在电脑b上登录,那么电脑a上的就自动退出。 然后再提醒。
这样在程序里这样实现:
在用户表里增加一个字段:last_session_id 之类的。这个字段的命名方式随便可以,然后用户登录的时候,就把这个字段更新成当前访问的session_id。 这样程序在判断用户登录状态的时候,验证一下,用户访问的session和数据库记录的last_session_id 是否一致,(也可以把last_session_id同时放到mamcache里,这样就不用每次刷新一个页面就得去查询一次做验证),如果一致,就是当前最后一次登录行为。如果不一致,就判断用户为未登录。
其实这个问题有两方面需要回答。
第一、如何判断一个用户在两处登录,第二、登录后的提醒。我对这两个问题用我的观点回答一下
如何判断一个用户在两处登录:
PHP-php实现一账号多地点或终端同时登陆时的提醒功能
在客户端种Cookie,然后把这个Cookie值存DB或者是Cache,虽然可以实现部分功能,但是还有一个关键需要考虑的就在用户点浏览器关闭后(即非正常退出),用户再次登录或者是在其它地方登录,也还是登录不了的。所以这个就是比较难解决,因为HTTP是无状态协议,即客户端的和服务端的请求完成后就互相没有关系了。所以这一点没有什么了的解决方案。
另外一个就是登录后的提醒:这个就是说当用户在其它地点登录后如果不是不让登录,而是提醒之前登录过的用户,那就是需要服务器端推送消息到客户端,可以参考一下 @新浪微博的页面自动提示有新消息或通知的功能是如何实现的? 和 @请教B/S模式下实现服务端消息推送到浏览器
比如你的Model层已经有一个用于验证用户是否已经登陆的方法,那么在这个方法里有如下代码
if( $row['lastCookie'] != $_COOKIE['mycookie'] )
{
//登陆的时候写一个随机值到lastCookie,当然$row可以是DB,也可以是cache,如果上一次的lastCookie不等于你的浏览器端的mycookie,就可以理解为有其他点登陆了帐号。你应该有更多的条件来约束它
}