2016-11-29 92 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()die;爲什麼不使用url helper中的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