2012-01-23 2 views
0

CodeIgniter를 사용하여 데이터베이스의 사용자 ID를 세션 데이터에 추가하려고합니다.세션 데이터에 사용자 ID 추가 (코드 번호)

나는이 question을 검토 한 결과 그것이 작동하지 않았다 나를

컨트롤러 코드 :

function validate_credentials() 
{  
    $this->load->model('users_model'); 
    $query = $this->users_model->validate(); 

    // if the users credentials validated... 

    if($query) 
    { 
     $user_id = $this->users_model->get_userID($this->input->post('email')); 

     /* 

     I dont need to worry about insecure code because all incoming data 
     is filtered (set in config.php) 

     */ 

     $data = array(
      'username' => $this->input->post('username'), 
      'is_logged_in' => true, 
      'user_id' => $user_id 
     ); 

     $this->session->set_userdata($data); 

     redirect('site/members'); 
    } 

    else 

    { 
     // incorrect username or password 
     $this->index(); 
    } 
} 

모델 코드 : (열이의 사용자 테이블에서 '사용자 ID'라고 db)

function get_userID($email){ 

    $this->db->where('email',$email); 
    $query = $this->db->get('users');  

    foreach ($query->result() as $row) 
    { 
     $user_id = $row->userID; 
    } 

    return $user_id; 

} 

뷰에서 배열을 호출하면 사용자 ID가 나타나지 않습니다.

<?php $this->session->userdata('user_id');?> 
+0

정확한 문제는 무엇인가를 보여줍니다 에코 얻을 그나마 작은 오류로? 다음 페이지의 세션에서 $ 데이터 배열을 보지 않습니까? – davidethell

+0

사과; 원래 게시물을 업데이트했습니다. 내가 뷰 내에서 배열을 호출 할 때 나는 아무것도 얻지 못한다. session-> userdata ('user_id');?> –

+0

다른 변수가 나타 납니까? –

답변

0

$ this 변수는 컨트롤러의 뷰와 동일하지 않습니다. 그냥 아이디 시도 보려는 경우 ..

$CI = &get_instance(); 
$CI->session->userdata('user_id'); 
+0

내가 잘못 생각, 당신은보기에서 인스턴스에 액세스 할 수 있기 때문에 그것의 포함 파일, 그 본질적으로 컨트롤러에서 메서드의 일부. 라이브러리 또는 도우미에 대한 진술은 CI 수퍼 클래스와 별개이기 때문에 진실입니다. –

+0

원칙적으로 동의하지만 실제로는 CI에서 항상이 작업을 수행해야했습니다. – davidethell

+0

흠, 그건 작동하지 않습니다. 내가 로그인 한 사람과 상관없이 6을 반환합니다. –

2

쿼리를 반향

<?php echo $this->session->userdata('user_id');?> 
0

시도를 : 당신이 세션에 그 방법을 참조 할 경우이 같은 $ CI 인스턴스를 얻을 수있다 그것은 항상 같은 문제를 이해하는 데 도움이 시도 에코 $user_id$data 때문에 때때로 당신은 당신의 쿼리에서 값을 당신에게 결과