如何检查用户是否已经登录?
这样,如果用户在另一个浏览器中无法使用相同的帐户登录。
此外,这是一个好的解决方案还是我应该让用户在其他浏览器中登录,然后注销当前用户并显示一条消息(您是从另一个位置登录的),就像 Messenger 一样?
最佳答案
使用 sessions是执行此操作的好方法,并且是一种非常常用的控制身份验证的方法。
流程通常是这样的:
- 用户访问网站,session_start()叫做。为该访问者设置了唯一的 session 标识符(即 cookie)。
- 用户将他的登录凭据提交到登录表单
- 登录凭据已验证,并且此事实通过
$_SESSION['logged_in'] = true
或类似内容存储在 session 数据中 - 对于用户在网站上的剩余时间,您可以检查
$_SESSION['logged_in']
以查看用户是否已登录。
为了控制用户的登录,您可以简单地在数据库中有一个字段(users
表很好)指示当前 session ID 是什么(使用 session_id()
),如果它与您刚刚收到的 cookie 值不匹配,那么您会立即为该 ID 调用 session_destroy()
,并认为该用户已注销。
使用 $_SESSION
意味着您不必担心生成自己的 token ,并为您提供内置超全局变量的功能,以便于存储有关用户身份验证状态的信息。
就我个人而言,对于大多数网站,我会允许一个用户激活多个 session ,因为通常没有充分的理由不这样做,但这显然取决于网站的性质。但是,如上所述存储当前事件 session ID 是实现此目的的一种非常简单的方法。
关于php - 检查用户是否已经登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964982/