0

我是第一次 php 开发人员;

我以这种方式跟踪会话:

session_start();
if (!isset($_SESSION['user']->iduser)) {
    die('Access denied. <br><a href=login.php>Please login</a>');
}

那是正确的方法吗?

4

2 回答 2

2

您的代码看起来好像您将整个对象存储到一个会话变量中,这不是一个好主意(可能会占用大量空间,存储太多数据,甚至可以不进行序列化/反序列化吗? )。

此外,如果您的用户尚未通过身份验证,您的代码会因为$_SESSION['user']尚未设置而引发警告 - 因此通过检查$_SESSION['user']->iduser,您将检查空对象上的属性/值。您的代码应该检查if (isset($_SESSION['user'])) {,然后可能对此进行验证。

我建议只在会话中存储“必需品”,例如用户的 ID/用户名和加密密码。然后,在每个页面加载期间,您根据数据库重新验证信息。这是每个页面加载的额外查询,但它是值得的(在我看来)。

于 2012-11-04T03:58:09.227 回答
1

我想你真的在问这个问题:

是否可以通过会话中的唯一 ID 来识别用户?

我的回答:是的。这通常是如何完成的,并且会在会话中正常工作。我不会使用 cookie 这样做,但在服务器端会话存储中应该没问题。

于 2012-11-04T03:57:21.723 回答