You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter登录后如何从Session中获取用户全部数据库数据?

实现登录后通过Session显示用户全部数据

没问题,我来帮你一步步搞定这个功能。你的现有login_model只做了登录成功与否的布尔判断,没有返回用户的具体数据,所以我们需要先调整模型逻辑,再在控制器里处理Session存储,最后在视图里展示数据。

步骤1:修改login_model,返回用户完整数据

把原模型的返回值从布尔值改成验证通过时返回用户的单行数据,失败时仍返回false:

<?php
class login_model extends CI_model {
    function Can_login($email,$password) {
        $this->db->select('*');
        $this->db->where('email',$email);
        $this->db->where('password',$password);
        $query = $this->db->get('registration');
        
        if($query->num_rows() > 0) {
            // 返回对象格式的用户数据,想用数组就改成 row_array()
            return $query->row();
        } else {
            return false;
        }
    }
}
?>

步骤2:在控制器中处理登录并存储用户到Session

假设你有个Login控制器,在处理登录提交的方法里(比如process_login),调用模型验证后把用户数据存入Session:

<?php
class Login extends CI_Controller {
    public function __construct() {
        parent::__construct();
        // 如果没在autoload.php里自动加载Session,就手动加载
        $this->load->library('session');
        $this->load->model('login_model');
    }

    public function process_login() {
        // 获取表单提交的账号密码
        $email = $this->input->post('email');
        $password = $this->input->post('password');

        // 调用模型验证登录
        $user_data = $this->login_model->Can_login($email, $password);

        if($user_data) {
            // 把用户数据存入Session,键名可以自己改
            $this->session->set_userdata('logged_user', $user_data);
            // 登录成功跳转到用户主页
            redirect('dashboard');
        } else {
            // 登录失败,设置提示信息
            $this->session->set_flashdata('login_error', '邮箱或密码不正确');
            redirect('login');
        }
    }
}
?>

步骤3:在视图中读取Session并显示用户数据

比如在dashboard.php视图里,先判断用户是否登录,再展示数据:

<?php
// 先检查用户是否已登录
if($this->session->userdata('logged_user')) {
    $user = $this->session->userdata('logged_user');
?>
    <h2>欢迎回来,<?php echo $user->name; ?></h2>
    <div class="user-info">
        <p>邮箱:<?php echo $user->email; ?></p>
        <p>注册时间:<?php echo $user->created_at; ?></p>
        <!-- 这里可以继续显示数据库里的其他用户字段 -->
    </div>
<?php
} else {
    // 未登录就跳回登录页
    redirect('login');
}
?>

额外提示

  • 建议在config/autoload.php里配置自动加载Session,避免每次控制器都手动加载。
  • 如果你的密码是明文存储的,赶紧改成加密存储(用password_hash()和password_verify()),这是安全基本要求。
  • Session的键名可以根据自己的习惯修改,只要控制器和视图保持一致就行。

内容的提问来源于stack exchange,提问作者Tanmay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:13:07