我有一个控制器,用于使用以下代码创建用户登录会话:
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。不确定我做错了什么。如果我通过这个
$数据['用户']
以视图作为数据,我能够访问名称和电子邮件,但我无法在控制器上访问它
答案 0 :(得分:1)
如果我理解正确,我相信你的问题就在这里。
$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()
是一种遗留方法,仅用于向后兼容旧版应用程序。
答案 1 :(得分:0)
首先,您需要商店会话数据 `
$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');
`