php 同时登录怎么办,一个系统允许同一个帐号最多10个人同时登录在线,如何做呢...

一个系统允许同一个帐号最多10个人同时登录在线,怎么做呢?

一个系统允许同一个帐号最多10个人同时登录在线,怎么做呢?说说大家的思路。。

------解决方案--------------------

是内部系统么。

建一个表logs表

ip user_id last_time

假设10分钟内算为在线

WHERE last_time+600 > time() 加 GROUP BY user_id 大于10个的话就不允许登录咯。

last_time+600 < time()的删掉。

具体还得实践测试……

------解决方案--------------------

登陆是登陆,限制是限制。

一个登陆一个session,和普通的用户没有任何区别。

限制是额外的附加,每个账号一个数据库计数字段即可,问题是如何给让某个user的某个登陆过期。

用户每次都注销的话,那么操作数据库-1就好了。 用户不注销的话,那么数据库应该在session过期的同时计数-1,这样才对用户比较合理。但是很难让session的有效期和计数-1自动的关联运行, 也就是某个登陆session过期了,而数据库里还没有-1,这对用户就不公平了。

所以,如果能够注册一个session过期的回调来操作数据库计数-1就好了,可惜不知道有没有php.ini可以配置调用个回调php文件? 估计没有。。

所以,我最终给出的方案为:用户不注销就永远保持其登陆状态,依靠一个单独的COOKIE维护。。。由crontab跑一个php定时脚本,对那些登陆状态保持超过N长的人删除其数据库的COOKIE记录并给技术-1,这样就让位其他用户了,而且原先登陆的那位同学也没话可说,只能重新试图登陆了。

增加一张表:AUTO_ID USER COOKIE, 每个USER的每个登陆点对应一个COOKIE,限制该表同一个USER的COOKIE不超过10即限制了10人登陆,只要把COOKIE生成发给每个登陆者,只要它们不注销,它们在一段时间内都保持在线,PHP检测他们是谁与否就是用查数据库里的COOKIE。为了清理那些没注销的用户,只能跑crontab定时清理了。

总结!~~~~~ 其实就是因为SESSION总会过期,过期了就无从追踪了,所以需要把会话持久化到数据库!!!

再其次,因为SESSION过期没法回调函数,所以只有持久化之后定期跑crontab清理超时COOKIE~~~~

------解决方案--------------------

探讨

登陆是登陆,限制是限制。

一个登陆一个session,和普通的用户没有任何区别。

限制是额外的附加,每个账号一个数据库计数字段即可,问题是如何给让某个user的某个登陆过期。

用户每次都注销的话,那么操作数据库-1就好了。 用户不注销的话,那么数据库应该在session过期的同时计数-1,这样才对用户比较合理。但是很难让session的有效期和计数-1自动的关联运行, 也就是某个登……

------解决方案--------------------

定制你的session handler即可,好处是不需要改动其它地方的代码

http://ca3.php.net/manual/en/class.sessionhandler.php

当然某些楼上的方法也都可以做到

看你自己的具体需求和现有实现而定

------解决方案--------------------

探讨

引用:

登陆是登陆,限制是限制。

一个登陆一个session,和普通的用户没有任何区别。

限制是额外的附加,每个账号一个数据库计数字段即可,问题是如何给让某个user的某个登陆过期。

用户每次都注销的话,那么操作数据库-1就好了。 用户不注销的话,那么数据库应该在session过期的同时计数-1,这样才对用户比较合理。但是很难让session的有效期和计数-……

------解决方案--------------------

探讨

定制你的session handler即可,好处是不需要改动其它地方的代码

http://ca3.php.net/manual/en/class.sessionhandler.php

当然某些楼上的方法也都可以做到

看你自己的具体需求和现有实现而定

------解决方案--------------------

探讨

如果楼主问的是 一个系统只允许同一个帐号被登录一次

你们也是这么回答吗?

------解决方案--------------------

探讨

引用:

定制你的session handler即可,好处是不需要改动其它地方的代码

http://ca3.php.net/manual/en/class.sessionhandler.php

当然某些楼上的方法也都可以做到

看你自己的具体需求和现有实现而定

看过这个session handler,不知道过期会不会回调destroy callba……

相关文章

相关视频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值