如何跟踪用户数据

时间:2012-12-06 15:06:01

标签: php oop session

OOP,SESSIONS和用户帐户中用于跟踪整个网站使用的用户信息的最佳方式是什么。 (例如Stack Overflow,Facebook,Google,YouTube等)

我在想,一旦用户登录,您就可以将所有信息分配给会话数组。举个例子:

  

$ _ SESSION ['user_id'],$ _SESSION ['roles']。

然后在OOP中你可以做到:

  

$ foo-> getUserId(),$ foo-> getAge($ user_id)等。

我想我的问题是,在基于用户的网页上处理用于动态内容的信息的最佳方法是什么? (例如用户档案,年龄,加入日期等)。我应该只存储user_id的SESSION变量,然后使用user_id来获取我想要的信息吗?

2 个答案:

答案 0 :(得分:3)

使用OOP主体的一个主要优点是,所有内容都成为一个具有自己属性的对象。

假设您已经处理了登录过程,最好以某种方式使用session_id()作为标识符,查找其用户ID,然后从User类返回一个新对象。这是一个示例:

class User
{
    public $forename;
    public $surname;
    public $google;
    ...

    function __construct($id)
    {
        // Get the record from the DB and assign thevalues as follows:
        $this->forename = $dbobject->forename;
        $this->surname = $dbobject->surname;
        $this->google = $dbobject->google;
    }
}

然后,您需要创建User对象,并将其指定为当前登录的用户:

$logged_in = new User($id);

此后,可以使用$logged_in->forename访问每个媒体资源。

答案 1 :(得分:0)

您希望最小化存储在$ _SESSION []中的数据。

我不确定你是否可以在PHP中使用类或结构,但是你可能想要创建一个具有属性username,user id,roles(array)的User对象。您可以添加您知道将在每个页面上显示的其他信息。这样,用户只需在$ _SESSION []中有一个项目。

只要用户登录,您总是拥有$ _SESSION ['User'],并且您可能希望使用用户信息来确定要显示的数据(博客条目,发布的视频等),以及根据用户的角色显示/隐藏页面的哪些部分。