首页 文章

在成功登录时,我应该在每个页面上的会话,全局变量或查询中保存用户数据吗?

提问于
浏览
0

如果我有一个带有用户名和密码的身份验证系统,它会在登录时查询数据库中的数据,例如用户名,用户ID,配置文件描述等 . 我应该如何保存这些数据,以便我可以在每个页面上显示它,例如,如果我想在每个页面的导航栏上显示用户名,只要用户登录即可 .

我应该在会话中保存用户ID并使用它来查询每个页面上的用户数据,以便在该页面上显示用户数据吗?

login.php
Query the users table to get the user id based on user name and password
SELECT uId FROM user WHERE pass = $_POST['pass'] and name = $_POST['name'];

$_SESSION['userId'] = $res['uid'];

otherPages.php
SELECT user_name FROM users WHERE uid = $_SESSION['userId'];

我应该只在登录发生时查询此信息并将所有内容保存在会话中吗?

login.php
Query the users table to get the user id based on user name and password
SELECT * FROM user WHERE pass = $_POST['pass'] and name = $_POST['name'];

$_SESSION['userId'] = $res['uid'];
$_SESSION['name'] = $res['user_name'];
$_SESSION['description'] = $res['des'];

otherPages.php
echo $_SESSION['name'];

登录后在页面之间保留用户数据的最佳方法是什么?查询每一页都很有效,直到现在,但感觉多余 . 这通常如何处理?谢谢 .

这个问题中的所有查询纯粹是例如,我实际使用的代码格式良好:)(可能) .

密码也使用php password_hash()进行哈希处理;

1 回答

  • 0

    这纯粹取决于您的需求 . 如果您知道可以在外部更改用户数据,例如由另一个用户,事件,..然后你应该每次从数据库中获取数据,以保持更新 . 但是,如果唯一可以修改数据的人是用户本身,那么您可以安全地将此信息保存在会话中,它可能会帮助您的应用程序 . 选择哪一个并不重要,因为时差会很小 .

    编辑:此外,您应该只通过他的用户名识别用户 .

相关问题