2011-03-14 3 views
3

안녕하세요, ive 님이 현재 신비한 문제가 있습니다 ... 내 웹 사이트에 로그인 서비스가 있습니다. Doctrine을 ORM으로 사용합니다. 사용자가 username과 password에 대한 올바른 조합을 입력하면 나중에 세션을 위해 검색된 사용자 객체를 저장하려고합니다.

$user = new models\User; 
$user = $em->getRepository('models\User')->findOneBy(array(
      'username' => $this->input->post('username'), 
      'password' => hash("sha512", $this->input->post('password')) 
      )); 

    if($user != NULL) { 
     session_start(); 
     $_SESSION['user'] = $user; 
    redirect('user'); 
    } 

 /** 
     * @ManyToOne(targetEntity="Country") 
     * @JoinColumn(name="country_id", referencedColumnName="id") 
     */ 
     private $country; 

사용자가 국가 같은 다른 특성을가 내 로그인에서 일부를 먹으 렴, 주소

그래서 내 문제는 등 : 분야의 국가 DB에 (null의 경우) 사용자가 로그인 잘 작동합니다 ...하지만 사용자가 국가 (국가 ID 및 이름을 가진) 할당 된 경우 내 시스템이 실패합니다. 하여 리디렉션 후 은 .. 변수가 단지

그것은 아마도 더 나은 그냥 세션 ID를 저장하고 모든 페이지에 사용자를로드 할 사라질 때 같은 더 PHP 오류 또는 뭔가가 없습니다 $ _SESSION 에는 $ 사용자 없다 하중?

답변

5

이드를 세션에 저장하고 모든 페이지를로드 할 때 사용자를로드하는 것이 더 좋을까요?

확실히. 사용자 데이터는 다음 페이지로드시에 이미 변경되었을 수 있으므로 분명히 데이터베이스에서 데이터를 새로 고쳐야하며 세션에서 이전 사용자 데이터를 읽지 않아야합니다.

참조 :

PHP: Storing 'objects' inside the $_SESSION

0

개체의 상태를 _sleep and _wakeup으로 저장하고 참조를 잃지 않고 일련 화하는 방법을 찾지 못하면 개체를 세션에 넣을 수 없습니다.

저는 실제로 ID를 저장하고 다음 요청시 다시 검색하는 것으로 갈 것입니다.