Codeigniter 3 登录成功设置用户名session及登出清除session的方法
CodeIgniter 3 登录Session设置与清除方案
前置准备
使用Session前需要先加载Session库,推荐在application/config/autoload.php配置自动加载,全局调用更方便:
找到配置项$autoload['libraries'],修改为:$autoload['libraries'] = array('session');
也可以在对应控制器方法中手动加载:$this->load->library('session');
登录成功设置Session
你当前的checkLogin方法仅返回布尔值,建议调整为返回用户数据,方便存储更多用户标识信息,修改逻辑如下:
调整校验登录方法
public function checkLogin($username, $pass){ $hash =sha1($pass); $this->db->from('Users'); $this->db->where('username', $username); $this->db->where('password', $hash); $query=$this->db->get(); if($query->num_rows() == 1){ // 登录成功返回用户完整数据 return $query->row_array(); }else{ return false; } }
修改登录处理方法增加Session写入逻辑
public function dologin(){ $this->load->helper('url'); $this->load->model('user_model'); $username = $this->input->post("username"); $pass = $this->input->post("password"); $user_info = $this->user_model->checkLogin($username, $pass); if ($user_info) { // 自定义需要存储的Session字段 $session_data = [ 'is_login' => true, 'username' => $user_info['username'], 'user_id' => $user_info['id'] // 关联用户表主键ID,后续业务调用更方便 ]; // 写入Session $this->session->set_userdata($session_data); redirect('messages/index'); } else { redirect('user/login'); } }
登出清除Session
在用户控制器新增登出方法,逻辑如下:
public function logout(){ $this->load->helper('url'); // 清除当前用户所有Session数据 $this->session->sess_destroy(); // 若仅需清除登录相关Session、保留其他业务Session可使用以下写法 // $this->session->unset_userdata(['is_login','username','user_id']); redirect('user/login'); }
后续业务需要校验登录状态时,直接读取Session判断即可:
// 未登录跳转登录页 if(!$this->session->userdata('is_login')){ redirect('user/login'); }
内容的提问来源于stack exchange,提问作者user14648299
相关产品推荐
相关产品推荐

