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

用户级别更新异常:目标用户与实际变更用户不匹配

解决CodeIgniter后台用户级别更新错误问题

问题根源

当前操作仅传递level参数,控制器通过level查询用户执行更新——这是错误逻辑:多个用户可能拥有相同级别,必然导致更新对象匹配错误。必须通过用户ID或用户名这类唯一标识定位目标用户。

修复步骤

1. 修改视图层:传递用户唯一标识

无论是链接跳转还是表单提交,必须携带目标用户的user_id或username参数:

  • 链接方式示例:
<!-- 假设用户数据存储在$user变量中 -->
<a href="<?= site_url('admin/updateLevel?user_id=' . $user['id'] . '&level=editor') ?>">设为编辑</a>
<a href="<?= site_url('admin/updateLevel?user_id=' . $user['id'] . '&level=admin') ?>">设为管理员</a>
  • 表单方式示例:
<form action="<?= site_url('admin/updateLevel') ?>" method="post">
    <input type="hidden" name="user_id" value="<?= $user['id'] ?>">
    <select name="level">
        <option value="user">普通用户</option>
        <option value="editor">编辑</option>
        <option value="admin">管理员</option>
    </select>
    <button type="submit">更新级别</button>
</form>

2. 修正控制器的updateLevel方法

接收用户唯一标识参数,以此定位用户后再更新级别,禁止用level作为查询条件:

public function updateLevel()
{
    // 接收参数(优先用user_id,也可替换为username)
    $user_id = $this->input->get('user_id') ?? $this->input->post('user_id');
    $new_level = $this->input->get('level') ?? $this->input->post('level');

    // 参数校验
    if (!$user_id || !$new_level) {
        $this->session->set_flashdata('error', '参数错误');
        redirect('admin/userList');
        return;
    }

    // 调用模型执行更新
    $update_result = $this->user_model->update_user_level($user_id, $new_level);

    $this->session->set_flashdata(
        $update_result ? 'success' : 'error',
        $update_result ? '用户级别更新成功' : '更新失败,请重试'
    );
    redirect('admin/userList');
}

3. 模型层实现精准更新逻辑

在User_model中添加专用更新方法,通过唯一标识锁定目标用户:

public function update_user_level($user_id, $new_level)
{
    $data = ['level' => $new_level];
    // 用user_id作为查询条件,确保仅更新目标用户
    $this->db->where('id', $user_id);
    return $this->db->update('users', $data);
}

若使用username作为标识,只需将where条件改为$this->db->where('username', $username)即可。

额外提示

  • 始终用唯一标识(如自增ID)定位数据库记录,避免使用级别、昵称等可能重复的字段。
  • 增加权限校验:确保当前登录用户拥有修改其他用户级别的权限,防止越权操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:25:54