嗨,我已经在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