gpt4 book ai didi

php登录 session 登录变量

转载 作者:搜寻专家 更新时间:2023-10-31 21:53:35 25 4
gpt4 key购买 nike

我正在学习 php 并且已经注册了一个类(class)。我的用户登录信息显示在下方。

我的问题是我是否必须在登录时在 session 中选择我想要的所有字段?我可以不只使用选择电子邮件并以此拉出所有行,还是我必须在登录时选择所有行?

以该 session 的 uid = uid 为例,它不应该提取有关 id = id 的用户的所有信息吗?

        $_SESSION['email'] = $email;
$_SESSION['uid'] = $row['uid'];



function login_user($email, $password)
{
$sql = "SELECT pwd, uid, user, birthdate FROM users WHERE email = '" . escape($email) . "' AND active = 1";

$result = query($sql);

if (row_count($result) == 1) {

$row = fetch_array($result);

$db_password = $row['pwd'];

if (password_verify($password, $db_password)) {

$_SESSION['email'] = $email;
$_SESSION['uid'] = $row['uid'];
$_SESSION['username'] = $row['username'];
$_SESSION['birthdate'] = $row['birthdate'];

return true;
} else {

return false;
}

return true;
} else {

return false;
}
}

最佳答案

决定在 session 数据中放入什么以及什么现在有效地归结为权衡——性能与存储空间。显然,这些论点基本上与小型项目无关,只有在用户量大、流量大等情况下才会有所作为。

首先,如果您的登录是基于 session 的,通常情况下,PHP 将在需要时加载所需的 session 数据,即在请求中提供 session cookie 时。 session 数据必须至少包含登录用户的用户名/ID。

方法 1 – 在 session 数据中存储大量内容

为什么不在 session 数据中加入更多内容?每当用户登录时,将数据从数据库加载到 session 中。

优点

  • 登录后无需进行任何数据库操作,只要数据不变即可。
  • 减少数据库服务器的负载。

缺点

  • 相反,PHP 在其服务器端 session 存储中存储数据的效率相对较低。
  • 如果您的数据库服务器与 PHP 服务器不同,这意味着您现在将数据存储在错误的服务器上。
  • 如果数据发生变化, session 必须失效。如果更改存储在 session 中的数据的唯一方法是通过用户交互,那么这很容易被发现。如果数据可以在外部更改(即其他用户可以通过某种交互更改数据),这是一个问题 - session 数据有时需要失效,因此您无论如何都必须检查数据库。

方法 2 – 将所有内容保存在数据库中

在这种情况下,您只在 session 数据中保留 id 或用户名。然后根据需要从数据库中加载任何其他数据。

优点

  • ID/用户名通常是为用户设置的。完全注册后,至少其中一项无法更改。因此,仅将这些保留在 session 数据中是非常安全的。
  • 存储 session 数据所浪费的空间更少。
  • 无需担心使陈旧数据失效/更新,用户会立即看到数据库中的任何更改(例如在下一个页面请求时)。
  • PHP 服务器不再负责跟踪数据,更容易将其与数据库服务器分离,更容易让多个 PHP 服务器与数据库服务器通信。

缺点

  • 必须经常查询数据库。

关于php登录 session 登录变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36466354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com