如何确保用户无法使用PHP中的同一个帐户登录两次?

问题描述:

我有一个会话的PHP应用程序,并希望确保用户不会将他们的凭据给第三方,这可能会同时使用该帐户。如何确保用户无法使用PHP中的同一个帐户登录两次?

有什么办法可以确保登录的用户将第一个用户踢出?

还有一种方法可以查看哪些会话处于活动状态?

非常感谢。

+1

将一个LoggedIn字段添加到您的数据库。 – Blender 2011-05-20 07:53:09

您可以将会话ID与登录用户相链接。然后查看该用户是否具有会话标识,如果是,则使用该会话标识销毁该会话。也链接会话名称。然后你可以销毁该用户的会话cookie。

setcookie($session_name, '', time()-3600, '/'); 

您可以在每次尝试进行身份验证时检查其用户表中的列。 (验证:true,false)。会话将会消失,并根据php设置中的时间框架被删除。如果文件不存在,会话就会消失。

+1

您也可以将会话ID密钥存储在users表中。 – John 2011-05-20 07:55:21

这是一家拥有多项解决方案的非常宽泛的问题 - 看到谷歌http://www.google.com/search?q=php+preventing+multiple+logins&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

总的原则是这样的 - 你需要跟踪会话和您的登录处理代码,检查是否会话是活跃的用户尝试登录 - 并阻止该登录尝试,或者以试图登录的用户为起点登录当前登录的用户。有几种方法来跟踪会话,处理到期等。通过覆盖PHP的默认会话处理机制,您甚至可以在很低的层次上执行大量的这种cusotmization - 这里是一个关于这个主题的便利文章http://devzone.zend.com/article/141