php - 检查用户是否已经登录?

标签 php session

如何检查用户是否已经登录?

这样,如果用户在另一个浏览器中无法使用相同的帐户登录。

此外,这是一个好的解决方案还是我应该让用户在其他浏览器中登录,然后注销当前用户并显示一条消息(您是从另一个位置登录的),就像 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/

相关文章:

php - 根据数据库中的日期选择数据

php - 解析带有名称的电子邮件地址(FROM 或 TO) - 不一定符合 rfc 2822

PHP 锁定/确保给定脚本在任何给定时间只运行一次

php - PHP的session变量安全吗?

PHP 自定义 session 处理程序问题 (PHP 7.1)

python - Flask session 注销并重定向到登录页面

php - 数据库行未在 HTML 表中完全显示

php - 使用 IBM Bluemix 进行 Laravel 数据库迁移

mysql - JSP使用当前用户的数据

html - asp session 超时无法正常工作