我正在学习php并注册了一门课程。我的用户登录信息显示在下面。
我的问题是我必须在登录时选择会话中我想要的所有字段吗?我可以不只是使用选择电子邮件并拉出所有行或我必须选择登录时的所有行吗?
示例如果没有提取有关id = id的用户的所有信息,请将此uid = uid用于该会话?
$_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;
}
}
答案 0 :(得分:0)
决定在会话数据中放入什么,以及现在有效地归结为权衡 - 性能与存储空间。显然,这些论点基本上与小型项目无关,只会对大量用户,流量等产生影响。
首先,如果您的登录是基于会话的,通常情况下,PHP将在需要时加载所需的会话数据,即在请求中提供会话cookie时。会话数据必须至少包含登录用户的用户名/ ID。
为什么不在会话数据中加入更多内容?每当用户登录时,将数据从数据库加载到会话中。
在这种情况下,您只在会话数据中保留id或用户名。然后根据需要从数据库中加载任何其他数据。