在PHP中处理多个单用户登录

时间:2009-11-10 00:01:30

标签: php authentication

我最近使用1个帐户在PHP模拟了多次登录。这就是我做的事情

  1. 打开2个登录屏幕
  2. 使用第一个登录屏幕登录帐户1
  3. 登录成功
  4. 使用第二个登录屏幕登录帐户2
  5. 我想要做的是当用户2在同一台机器和同一台浏览器上登录时注销用户1。

    我该怎么做?我也使用Gmail执行此操作,如果已登录电子邮件1并通过电子邮件发送2登录,则Gmail会显示一个警告框,指出用户1已注销(假设我使用同一台计算机并在同一浏览器中登录)。

2 个答案:

答案 0 :(得分:1)

如果您为所有用户设置了相同的Cookie,则可以使用javascript定期检查与该Cookie关联的用户名/数据是否与最初登录页面的用户/数据相同。

如果您看到更改,请弹出通知并离开页面。

此外,如果您必须验证这一点,除了cookie之外,您可以向每个发布/获取请求发送目标用户,然后验证cookie是否与该用户匹配。这会导致其他类型的问题,所以它可能有点过分。

答案 1 :(得分:0)

如果要保存sessions(如果涉及任何持久数据,则应该保存),只需检查其他用户会话是否存在并将其删除。

更新:

我认为这不是Gmail方法,至少对我来说不一样。我可以打开2个Gmail登录标签(相同的浏览器,与所述相同的会话),并在这两个标签中进行身份验证而不会出现问题。当然,这两个连接都出现在Gmail的帐户活动中,但它不会被视为恶意活动,只有当您在另一台计算机上时才会被踢出。

您无法真正区分使用相同浏览器和同一会话的用户,只是因为您没有使用持久连接,这就是网络的本质。

你需要一些东西来区分它们:日期,浏览器会话,IP,任何东西。看来你唯一的选择就是当他们中的任何一个登录时使用时间戳,但这非常棘手,我不推荐它。

如果他试图在同一个浏览器上使用相同的登录信息,那么我建议用户1点击用户2(好的,恶搞)。