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

Laravel访问session用户ID报Cannot access offset of type string on string问题问询

报错触发原因

  • 存储session的代码中,你用单引号包裹了$user_data变量,PHP的单引号不会解析内部变量,导致你存入session的不是查询得到的用户模型实例,而是字面量字符串$user_data。
  • 后续读取时你尝试用数组下标['id']访问字符串类型的值,不符合PHP语法规则,直接触发类型错误。

修复方案

  1. 修正session存储逻辑,去掉变量外的单引号:
// 原错误代码
$req->session()->put("user", '$user_data');
// 修正后代码
$req->session()->put("user", $user_data);
  1. 读取session时适配取值语法:如果存入的是Eloquent模型对象,更推荐用对象属性语法获取ID,避免数组下标写法的兼容性问题:
// 原写法
$user_id = session()->get("user")['id'];
// 优化后写法
$user_id = session()->get("user")->id;

额外优化建议

你当前代码中直接比对明文密码的做法存在严重安全风险,建议使用Laravel自带的哈希工具处理密码:

  • 密码入库时调用Hash::make($password)生成加密后的值存储
  • 登录校验时用Hash::check($req->input('password'), $user_data->password)验证密码正确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:27:04