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

普通用户登录报Trying to get property 'id' of non-object错误求助

你遇到的报错核心原因是处理普通用户登录逻辑时,$query不是有效对象,无法读取id属性。管理员账号能正常登录是因为查询管理员账号时$query能返回匹配的对象,普通用户查询没有返回结果。

解决步骤

  • 优先补全查询结果校验逻辑,先确认$query是有效对象且包含对应属性,再执行会话赋值操作,避免空对象调用属性报错。
  • 检查账号查询逻辑,确认是否加了管理员角色的限定条件,导致普通用户账号无法匹配到查询结果。如果普通用户和管理员存在不同的身份字段、或者分表存储,要分开写查询逻辑,不要复用管理员的查询代码。
  • 如果普通用户和管理员的登录状态需要分开标识,不要都用_admin_开头的会话字段,避免后续权限判断出现串权问题。
  • 排查时可以在查询后临时加打印逻辑输出$query的值,确认普通用户登录时$query的返回结果,快速定位是查询条件问题还是数据缺失问题。

优化后代码示例

// 先校验查询结果有效性,再处理登录逻辑
if (is_object($query) && isset($query->id, $query->name, $query->email, $query->status)) {
    $data = array(
        '_admin_id'         => $query->id,
        '_admin_name'       => $query->name,
        '_admin_email'      => $query->email,
        '_admin_loggedin'   => TRUE,
        '_admin_status'     => $query->status
    );
    $this->session->set_userdata($data);
} else {
    // 登录失败逻辑,可根据业务需求调整
    $this->session->set_flashdata('login_error', '账号或密码错误,请重试');
    redirect('/login');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:27:02