我有一个会话,我变成了变量$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
会话销毁后第一个控制器中的变量,则变量打印出来。但它不会在第二个。
答案 0 :(得分:0)
我不确定这是你的问题,但我认为这一行存在问题:
$this->session->set_userdata($userID);
set_userdata
accepts two kinds of arguments (link to docs) :
所以你可能要做的就是
$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');
第一个电话无用,应该删除。