0

OOP、SESSIONS、およびユーザー アカウントで、Web サイト全体で使用するユーザー情報を追跡するための最良の方法は何ですか。(例: Stack Overflow、Facebook、Google、YouTube など)

ユーザーがログインすると、すべての情報をセッション配列に割り当てることができると考えていました。例:

$_SESSION['user_id']、$_SESSION['役割']。

次に、OOPで次のことができます:

$foo->getUserId()、$foo->getAge($user_id) など。

私の質問は、ユーザーに基づく Web ページ全体で動的コンテンツに使用する情報を処理する最良の方法は何だと思いますか? (例:ユーザープロフィール、年齢、入会日など)。user_id の SESSION 変数のみを保存し、user_id を使用して必要な情報を取得する必要がありますか?

4

2 に答える 2

3

OOP プリンシパルを使用する主な利点の 1 つは、すべてが独自のプロパティを持つオブジェクトになることです。

すでにログイン プロセスを処理していると仮定すると、何らかの方法で 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

于 2012-12-06T15:10:30.743 に答える
0

$_SESSION[] に格納するデータを最小限に抑える必要があります。

PHP でクラスや構造体を作成できるかどうかはわかりませんが、少なくともプロパティ username、user id、roles (array) を持つ User のオブジェクトを作成することをお勧めします。すべてのページに表示されることがわかっているその他の情報を追加することができます。この方法では、ユーザーの $_SESSION[] に 1 つの項目しかありません。

ユーザーがログインしている限り、常に $_SESSION['User'] があり、おそらくユーザー情報を使用して、表示するデータ (ブログエントリ、投稿されたビデオなど) と、そのユーザーの役割に応じて表示/非表示にするページ。

于 2012-12-06T15:14:11.443 に答える