200分求助(PHP如何防止用户重复登录????)

music_boy_2000 2007-04-18 02:41:10
我现在的情况是这样的:

已经可以防止用户重复登录,但如果用户非法退出后,就再也登录不进来了,要怎么解决呢???应该怎么判断用户非法退出呢???
...全文
548 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
eightwhells 2011-10-19
  • 打赏
  • 举报
回复
补充一点,
突然想到,要是在数据表中同时保存用户的登陆IP,
然后,对于同一个IP,给予其登陆权,保证其在session或者cookie丢失,而没有超过销毁登陆时间的情况下可以正常登陆。
这样只有这个用户在本机非正常情况推出,而在短时间(没有超过设定的销毁记录时间)内在另一个IP登陆,就要等待了。
这个BUG可容忍吗??
eightwhells 2011-10-19
  • 打赏
  • 举报
回复
同样求助啊,
没有好办法啊。
cookie不完全安全,
session又没法在关闭浏览器之后继续存在,
还没有session监听的机制。
在数据表中建立信息表,记录其状态,
使用session还是cookie呢,
用session一样在关闭浏览器后的一段时间(从最后退出时间到设定的销毁登录状态的时间)内无法登陆,
要是cookie吧,安全不说,要是用户使用了清空浏览器数据(好像很多用户都将清空数据作为扫除浏览器垃圾的功能来用,使用频率不低啊),一样是在一定时间内无法登陆。
难道真的没有完美的解决方案吗??
纠结。
求大神帮忙!!!
music_boy_2000 2007-04-23
  • 打赏
  • 举报
回复
十分感谢大家回复!不好意思,我点数搞错啦,200分的问题搞成20分啦,怎么样再给分给你们,谢谢啦
li1229363 2007-04-18
  • 打赏
  • 举报
回复
这样啊~也就是说,只要不是点击“注销”退出的,都是非法退出吧?

ASP可以使用Session Start进行控制。但是PHP没有这样的好运了。只能使用数据库进行存储每个人的最后动作时间了。Cookie能作假,session好像实现不了。

在“注销”的时候,把最后活动时间清空,其他的视乎,每次操作网页的时候,就往数据库里面写入一次动作时间。在这个用户登陆的时候,如果动作时间不是空,就说明,这个用户是非法退出了。OK?

重点就是“注销”的时候清空数据库里面的最后动作时间!
music_boy_2000 2007-04-18
  • 打赏
  • 举报
回复
比如说死机啦什么的,就是非法退出啊
zeroleonhart 2007-04-18
  • 打赏
  • 举报
回复
数据库session+cookie,后来者挤掉前者
li1229363 2007-04-18
  • 打赏
  • 举报
回复
你定义的非法退出是什么样子的??
mrshelly 2007-04-18
  • 打赏
  • 举报
回复
电影点播时,不断地在后台更新一下用户活跃时间.
yibotiemen 2007-04-18
  • 打赏
  • 举报
回复
非正常退出的话你记录了他最后一次活跃时间,然后你在设置一个判断时间,如果最后活跃时间距今大于设置的这个时间,就把它清理掉让他进来就好了啊。
poiu_poiu 2007-04-18
  • 打赏
  • 举报
回复
mark
ImN1 2007-04-18
  • 打赏
  • 举报
回复
最好是后来登录者(B)挤掉前面的登录者(A),
并且,当A有新操作时,向他发出警告:“有其他人登录”,由A自己判断B是否非法
然后A可以向管理员投诉或者自行锁帐号等等
music_boy_2000 2007-04-18
  • 打赏
  • 举报
回复
我是个电影程序,如果这个账号在点播后就不动了,那怎么判断呢?
wasuka 2007-04-18
  • 打赏
  • 举报
回复
有动作就更新数据库里的“上次动作时间”
music_boy_2000 2007-04-18
  • 打赏
  • 举报
回复
问题就是怎样判断他有无动作呢??
wasuka 2007-04-18
  • 打赏
  • 举报
回复
给用户设定一个超时时间。规定时间内没有任何动作则视为自动登出

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧