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

Accessing session data in another controller gives error

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();

但这给出了错误

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: session_data

Filename: controllers/Photo.php

Line Number: 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');