2011-04-17 114 views
1

可能重复:
PHP /SESSION: Login one per user?如何防止来自不同设备的多个用户同时登录同一个帐户?

您好所有,

我需要知道如何让一个用户登录一次

感谢

+0

在数据库中存储一个值,当它们登录时将它设置为true。每次尝试登录时都检查它是否为false ..? – Elliott 2011-04-17 19:07:46

+0

@Elliot:我建议存储'session_id()'值 - 这样一来,确保帐户登录到那台计算机要容易得多。当他们登录到其他地方时,它会发生变化,因此将存储值与浏览器中保存的值进行比较将会导致错误。 – Bojangles 2011-04-17 19:15:10

回答

5

如果你是使用PHP的内置会话功能。您可以使用$ session_id = session_id()获取会话ID。

当用户登录时,您可以获取它生成的会话标识并将其存储到该用户帐户下的数据库中。然后在每个页面上检查当前会话ID是否与该用户的数据库中存储的会话ID相匹配(如果没有,则终止当前会话并将其重定向到登录页面)。

会话ID在他们登录的每台设备上会有所不同。

这有道理吗?

+5

..如果会话超时,用户将永远无法再次登录,因为他有一个新的会话ID .. – halfdan 2011-04-17 19:55:05

+3

杀死前一个会话,保持当前会话会更好:) – Hugo 2013-07-30 13:51:31