在另一个控制器访问会话数据给出错误

在另一个控制器访问会话数据给出错误

问题描述:

public function LoginUser() 
{ 

    $this->form_validation->set_rules('email', 'Email', 'required'); 
    $this->form_validation->set_rules('password', 'Password', 'required'); 
    if ($this->form_validation->run() == FALSE) 
    { 
     $this->load->view('login'); 
    } 
    else 
    { 

     $data['Email']=$this->input->post('email'); 
     $data['Password']=$this->input->post('password'); 
     $result=$this->UserAccount_model->LoginUser($data); 
     if($result) 
     { 

      $session_data = array(
      'sesid' => $result[0]->id, 
      'sesname' => $result[0]->Name, 
      'sesemail' => $result[0]->Email); 

      // Add user data in session 
      $this->session->set_userdata('logged_in', $session_data); 

      $url=base_url()."UserAccount/LoggedIn"; 

       header("Location:$url"); 
     } 

照片的控制器现在我访问会话数据在另一个控制器访问会话数据给出错误

public function LikePhoto() 
{ 
    $Id=$this->uri->segment(3); 
    $UserId=$this->$session_data['sesid']; 
    print($UserId); 
    exit(); 

但是这给错误

遇到

一个PHP错误

严重性:通知

消息:未定义的变量:session_data是

文件名:控制器/ Photo.php

行号:55

在CI获取会话数据,你必须使用$this->session->userdata()

因此,将您的代码更改为:

$UserId=$this->session->userdata('logged_in')['sesid']; 

编辑如果你想从阵列只会增加数组变量数据存储在会话

因此改变

$this->session->set_userdata('logged_in', $session_data); 

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

,并检索:

$UserId=$this->session->userdata('sesid'); 
+0

它应该不是'logged_in'而是' sesid'就像这样'$ this-> session-> userdata('logged_in')['sesid']' – C2486

+0

因为这也必须改变'set_userdata'。见更新@ user2486 –

+0

好吧,你做了更改 – C2486