【问题标题】:Start new session in CodeIgniter在 CodeIgniter 中启动新会话
【发布时间】:2016-11-30 03:20:10
【问题描述】:

我有一个会话,我将其转换为变量$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 在会话销毁后我的第一个控制器中的变量,该变量会打印出来。但是它不会在第二个。

【问题讨论】:

  • 建议:代替header() die;为什么不使用 url helper 中的 codeigniter redirect()。

标签: php codeigniter session


【解决方案1】:

我不确定这是你的问题,但我认为这行有问题:

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

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

  1. 单个参数作为键和值的关联数组或
  2. 一个“键”第一个参数和一个“值”第二个参数

所以你可能想要做的是

$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');

第一次调用没用,应该去掉。

【讨论】:

  • 很高兴能帮到你!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 1970-01-01
  • 2011-09-02
  • 2019-01-02
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
相关资源
最近更新 更多