OOP,SESSIONS和用户帐户中用于跟踪整个网站使用的用户信息的最佳方式是什么。 (例如Stack Overflow,Facebook,Google,YouTube等)
我在想,一旦用户登录,您就可以将所有信息分配给会话数组。举个例子:
$ _ SESSION ['user_id'],$ _SESSION ['roles']。
然后在OOP中你可以做到:
$ foo-> getUserId(),$ foo-> getAge($ user_id)等。
我想我的问题是,在基于用户的网页上处理用于动态内容的信息的最佳方法是什么? (例如用户档案,年龄,加入日期等)。我应该只存储user_id的SESSION变量,然后使用user_id来获取我想要的信息吗?
答案 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'],并且您可能希望使用用户信息来确定要显示的数据(博客条目,发布的视频等),以及根据用户的角色显示/隐藏页面的哪些部分。