2016-11-29 5 views
0

변수가 $userID 인 세션이 있습니다.CodeIgniter에서 새 세션 시작

이제 다른 컨트롤러에서 변수를 사용해야합니다. $this->session->sess_destroy(); 세션 이후에 새 세션을 시작하려고했습니다.

다음 두 번째 컨트롤러에서 세션 데이터를 가져 오려고했지만 NULL이 나타납니다.

먼저 컨트롤러

public function index() 
{ 

    if ($this->input->post('tid')) { 

     $this->session->userdata('user_id'); 
     $userID = $this->session->userdata('user_id'); 
     $this->session->sess_destroy(); 

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

     $this->input->post('userid'); 
     $data['tid'] = $this->input->post('tid'); 
     $this->load->view('client/login', $data); 


    } else { 
     header("Location: " . base_url() . "index.php/select"); 
     die(); 
    } 

} 

두 번째 컨트롤러

private function getResults() 
{ 
    $this->session->userdata('user_id'); 

    $userID = $this->session->userdata('userid'); 

    var_dump($userID); 
} 

세션 변수 인쇄를 파괴 한 후 내가 처음으로 컨트롤러에 변수를 vardump합니다. 그러나 그것은 두 번째가 아닙니다.

+1

제안 : header() 대신; 왜 url 도우미에서 codeigniter redirect()를 사용하지 않습니까? – user4419336

답변

0

나는이 방법으로 문제가 있는지 모르겠지만 나는이 라인에 문제가 있다고 생각 :

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

set_userdata accepts two kinds of arguments (link to docs) :

  1. 키와 값 또는
  2. 의 연관 배열로 단일 인수
  3. "키"첫 번째 인수와 "값"두 번째 인수

그래서 당신이 아마 할 방법을 찾고 오히려

$this->session->set_userdata('user_id', $userId); 

또는

$data = ['user_id' => $userId]; 
$this->session->set_userdata($data); 

원하는대로

입니다. 또한 부수적으로이 종류의 코드는 몇 번 반복됩니다.

$this->session->userdata('user_id'); 
$userID = $this->session->userdata('user_id'); 

첫 번째 호출은 쓸모가 없으므로 제거해야합니다.

+0

완벽한 감사합니다 –

+0

다행입니다. – SolarBear

관련 문제