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

Codeigniter Session登录问题:chek2用户无法访问home_sekda页面

解决CodeIgniter中Sekda角色登录跳转失败的问题

我帮你分析下,你遇到的问题大概率是目标页面的登录状态校验逻辑不匹配,或者现有登录函数的查询逻辑可以优化。下面一步步来解决:

首先排查核心问题:目标页面的权限拦截

你先去检查admin控制器里的home_sekda方法,是不是只校验了status_login_admin这个Session标识?比如可能有这样的代码:

public function home_sekda() {
    // 只认admin的登录状态,sekda的session不被识别
    if (!$this->session->userdata('status_login_admin')) {
        redirect('admin/login');
    }
    // ...页面其他逻辑
}

如果是这样,必须把校验改成匹配status_login_sekda:

public function home_sekda() {
    // 校验sekda的登录状态
    if (!$this->session->userdata('status_login_sekda')) {
        redirect('admin/login');
    }
    // ...页面其他逻辑
}

优化登录函数的查询逻辑(可选但推荐)

你的原代码做了两次数据库查询,其实可以合并成一次,既提高效率也减少出错概率:

function login_proses() { 
    $username = $this->input->post('username'); 
    $password = $this->input->post('password'); 

    // 一次性获取匹配用户名和密码的用户
    $user = $this->db->get_where('tabel_users', [
        'username' => $username, 
        'password' => $password
    ])->row();

    if ($user) {
        // 根据用户的status字段分配不同的登录状态
        $session_data = ['username' => $username];
        if ($user->status == '1') {
            $session_data['status_login_admin'] = 'sudah_login';
            redirect('admin/home'); 
        } elseif ($user->status == '0') {
            $session_data['status_login_sekda'] = 'sudah_login';
            redirect('admin/home_sekda'); 
        }
        $this->session->set_userdata($session_data);
    } else {
        // 账号密码不匹配,返回错误页
        $this->template->load('templatelogin','admin/login/login_error'); 
    } 
}

额外需要检查的点

  • Session库是否正常加载:确保在application/config/autoload.php里已经把session加入自动加载列表:
    $autoload['libraries'] = array('session');
    
  • 密码安全性提醒:你现在是明文存储密码,这非常不安全!建议改用CodeIgniter支持的密码加密方案,比如注册时用password_hash()加密,登录时用password_verify()验证:
    // 注册时加密密码示例
    $hashed_pwd = password_hash($raw_password, PASSWORD_DEFAULT);
    // 登录时验证示例
    if (password_verify($password, $user->password)) {
        // 密码匹配,继续登录流程
    }
    
  • 路由是否正确:确认admin/home_sekda对应的控制器方法存在,没有拼写错误,或者在routes.php里有没有错误的路由规则导致跳转异常。

按照上面的步骤调整后,Sekda角色的用户应该就能正常跳转到home_sekda页面了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:01:54