我有一个控制器,用于使用以下代码创建用户登录会话:
public function account(){
$data = array();
if($this->session->userdata('isUserLoggedIn')){
$data['user'] = $this->user->getRows(array('id'=>$this->session->userdata('userId')));
//Create session
$newdata = array(
'username' => $user['name'],
'email' => $user['email'],
);
$this->session->set_userdata($newdata);
//load the view
$this->load->view('templates/header', $data);
$this->load->view('pages/home', $data);
$this->load->view('templates/footer', $data);
//redirect('pages/view/');
}else{
redirect('users/login');
}
}
当我尝试从此控制器或任何其他控制器检查会话数据时,会出现问题,并且它始终返回false。不确定我做错了什么。如果我通过这个
$数据[ '用户']
作为数据查看,我能够访问名称和电子邮件,但我无法在控制器上访问它
如果我理解正确,我相信你的问题就在这里。
$newdata = array(
'username' => $user['name'],
'email' => $user['email'],
);
变量$user
尚未在控制器中设置,至少不在您显示的代码中。我想这就是你需要的
$newdata = array(
'username' => $data['user']['name'],
'email' => $data['user']['email'],
);
有关获取会话数据的建议,与您的问题无关。使用CI> = v3.0.0,您可以获得这样的会话数据项。
$this->session->isUserLoggedIn;
此方法背后的代码较小,您键入较少以获得$this->session->userdata('isUserLoggedIn')
提供的相同返回值。
userdata()
是一种遗留方法,仅用于向后兼容旧版应用程序。
首先,您需要存储会话数据`
$sedata = array(
'user' => 1,
'username' => $username,
'userid' => $dbrow->id,
'mobile_phone' => $dbrow->mobile_phone,
'success' => 'Successfully loggedin!',
'logged_in' => TRUE
);
$this->session->set_userdata($sedata);
**Now you get session data like :**
$this->session->userdata('user');
$this->session->userdata('userid');
`