嗨,我已经在Codeigniter中创建了一个会话,我已经在我的模型中设置了会话变量.但是当我通过Controller调用session变量时设置会话变量值,会话变量值变为null.任何帮助?
更新
这是我设置我的会话变量的模型
- function login ($username,$password)
- {
- $this->db->where('username',$username);
- $this->db->where('password',$password);
- $query = $this->db->get('users');
- if ($query->num_rows()>0)
- {
- foreach ($query->result() as $rows)
- {
- $data = array(
- 'user_name' => $rows->username,'logged_in' => TRUE,'validated' => true
- );
- }
- $this->session->set_userdata($data);
- //$user = $rows->username;
- //$this->session->set_userdata('user_name',$user);
- return true;
- }
- else
- {
- return false;
- }
- }
这是我的控制器从哪里我重定向到视图
- public function verification()
- {
- $username = $this->input->post('username');
- $password = $this->input->post('password');
- $result = $this->site_model->login($username,$password);
- //$result = $this->session->set_userdata('validated');
- if ($result)
- {
- //$this->admin();
- //$this->session->set_userdata('login_state',TRUE);
- redirect ('site/index');
- }
- else
- {
- redirect ('site/login');
- //$this->load->view('login');
- }
- }
我已经调用了session_start();在控制器中的construct()下;
这是我在视图中访问会话变量的方式
- <?PHP if ($this->session->userdata('user_name') != "") { ?>
- .....
首先在CI中,您不需要在任何地方使用session_start().只能在config / autoload.PHP文件中自动加载会话.
删除该session_start().
尝试使用flashdata. Flashdata是临时会话,主要用于您的类型的情况,我们需要将用户重定向到另一个页面并显示一些成功或错误消息.
>设置flashdata:
$this-> session-> set_flashdata(‘item’,’value’);
>获取flashdata:
$这 – >会话而> flashdata( ‘项目’);
这是文档链接http://www.codeigniter.com/user_guide/libraries/sessions.html#flashdata