我是第一次 php 开发人员;
我以这种方式跟踪会话:
session_start();
if (!isset($_SESSION['user']->iduser)) {
die('Access denied. <br><a href=login.php>Please login</a>');
}
那是正确的方法吗?
您的代码看起来好像您将整个对象存储到一个会话变量中,这不是一个好主意(可能会占用大量空间,存储太多数据,甚至可以不进行序列化/反序列化吗? )。
此外,如果您的用户尚未通过身份验证,您的代码会因为$_SESSION['user']
尚未设置而引发警告 - 因此通过检查$_SESSION['user']->iduser
,您将检查空对象上的属性/值。您的代码应该检查if (isset($_SESSION['user'])) {
,然后可能对此进行验证。
我建议只在会话中存储“必需品”,例如用户的 ID/用户名和加密密码。然后,在每个页面加载期间,您根据数据库重新验证信息。这是每个页面加载的额外查询,但它是值得的(在我看来)。
我想你真的在问这个问题:
是否可以通过会话中的唯一 ID 来识别用户?
我的回答:是的。这通常是如何完成的,并且会在会话中正常工作。我不会使用 cookie 这样做,但在服务器端会话存储中应该没问题。