在CodeIgniter中启动新会话

时间:2016-11-29 16:36:39

标签: php codeigniter session

我有一个会话,我变成了变量$userID

我现在需要在不同的控制器中使用该变量。我试图在会话$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 个答案:

答案 0 :(得分: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');
    

    第一个电话无用,应该删除。