PHP中除邮箱外其他Session值为空的问题排查与解决
问题解决思路
从你的输出能明确看出,$userData对象中的first_name、last_name、roles属性实际为NULL,才导致存入SESSION后对应字段为空。按以下步骤排查修复:
第一步:查看
var_dump($userData)的实际输出
你代码中已经添加了var_dump($userData);,直接查看该输出结果:- 如果对象内这些字段本身就是
NULL,说明UserModel的get()方法未从数据库正确获取数据,需检查该方法的SQL查询语句,确认是否查询了first_name、last_name、roles字段,同时验证$email参数是否匹配数据库中的记录。 - 如果对象内这些字段有有效值,但属性名和你使用的不一致(比如数据库字段是
firstname,对象属性为firstname而非first_name),则修正$userDataArray中的属性引用名即可。
- 如果对象内这些字段本身就是
第二步:检查对象属性的访问权限
若UserModel里的first_name等属性是private或protected,直接通过$userData->first_name访问会返回NULL。这种情况有两种解决方式:- 将模型中的对应属性改为
public; - 使用模型提供的getter方法获取值,比如
$userData->getFirstName()、$userData->getLastName()。
- 将模型中的对应属性改为
第三步:临时调试方案
可以将对象强制转为数组,查看所有可访问的属性及对应值:var_dump((array)$userData);根据输出的数组键名,调整
$userDataArray中的字段映射关系。比如如果数组键名是\x00UserModel\x00first_name,说明该属性是私有属性,必须通过getter方法或调整属性权限来访问。
内容的提问来源于stack exchange,提问作者Kwikseller Technologies
相关产品推荐
相关产品推荐

