2012-12-06 2 views
0

OOP, SESSIONS 및 사용자 계정에서 웹 사이트에서 사용할 사용자 정보를 추적하는 가장 좋은 방법은 무엇입니까? (예 : 스택 오버플로, Facebook, Google, YouTube 등)사용자 데이터 추적 방법

일단 사용자가 로그인하면 모든 정보를 세션 배열에 할당 할 수 있다고 생각했습니다. 예 :

$ _SESSION [ 'user_id'], $ _SESSION [ 'roles'].

그런 다음 OOP에 당신은 할 수 :

$ foo-> GETUSERID(), $ foo-> getAge 등의 ($ USER_ID가),

것 같아요 내 질문은 사용자를 기반으로하는 웹 페이지에서 동적 콘텐츠에 사용할 정보를 처리하는 가장 좋은 방법은 무엇입니까? (예 : 사용자 프로필, 나이, 가입 날짜 등). user_id의 SESSION 변수 만 저장 한 다음 user_id를 사용하여 원하는 정보를 가져와야합니까?

+0

전체 세션에서 변경되지 않는 정보 일 경우 한 번 쿼리하여 저장하십시오. 그렇지 않으면 당신은 부실 해지고 상충되는 가치를 가질 위험이 있습니다. – ethrbunny

+0

난 단지 세션에서 user_id를 저장하고 데이터베이스에서 다른 모든 것을 검색합니다. 당신이 OOP 인 무언가를 구하는 경우에 당신은 orm과 같은 교리를 시도해야합니다. –

답변

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; 
    } 
} 

그런 다음 사용자 개체를 작성해야하고, 현재 로그인 한 사용자로 당신은 그것을 지정할 수 있습니다 :

$logged_in = new User($id); 

이후, 각 속성에 액세스 할 수 $logged_in->forename를 사용하여.

+0

SO 시스템을 예로 들어 보겠습니다. OOP를 사용하여 사용자 데이터를 가져 오는 방법은 무엇입니까? 예를 들면 평판, 프로필 정보, 관련 질문, 게시물 및 답변이 있습니까? 관련 정보를 가져 오기 위해 저장된 세션 ID를 사용자 ID로 사용합니까? –

+1

예. 사용자에 관한 모든 것이 DB에 저장되어야합니다. 사용자가 로그인하면 session_id를 관련 사용자 ID에 매핑합니다. 그런 다음 당신이 보여준 것처럼 생성자를 실행하고, 필요한 것을 가져올 수 있습니다. – BenM

+0

당신이해야한다면, 당신은 $ _SESSION [ 'user']'안에 객체의 직렬화 버전을 저장할 수 있지만 세션을 사용하는 이유는 무시할 수 있습니다.BenM이 보여준 방법은 ID를 사용할 때 인스턴스화하는 가장 좋은 방법입니다. 클래스를 사용하려면 – pocesar

0

$ _SESSION []에 저장할 데이터를 최소화하고 싶을 것입니다.

PHP에서 클래스 나 구조체를 처리 할 수 ​​있는지는 잘 모르겠지만 최소한 사용자 이름, 사용자 ID, 역할 (배열) 속성을 가진 사용자 객체를 만들고 싶습니다. 모든 페이지에 표시 될 것으로 알고있는 다른 정보를 추가 할 수 있습니다. 이 방법으로 사용자는 $ _SESSION []에 하나의 항목 만 가질 수 있습니다.

사용자가 로그인되어있는 한 항상 $ _SESSION [ 'User']이 (가) 있으므로 사용자 정보를 사용하여 표시 할 데이터 (블로그 항목, 게시 된 비디오 등)를 결정할 수 있습니다. 해당 사용자의 역할에 따라 페이지의 어느 섹션을 표시/숨길 지 결정합니다.