CodeIgniter登录后无法显示用户firstname的问题求助
解决CodeIgniter登录后无法显示firstname的问题
以下是排查和解决的具体步骤:
1. 检查数据库字段名匹配
最常见的问题是代码字段名与数据库实际字段名不匹配:
- 打开
users数据表,确认存储用户名字的字段是firstname,还是类似first_name的下划线命名格式。 - 如果数据库字段是
first_name,需要修改控制器里的赋值代码:将$result->firstname改为$result->first_name,若视图中仍用firstname作为Session键,只需保持auth_details数组的键为firstname,值对应修改即可。
2. 验证模型返回的数据
在控制器登录逻辑中添加临时调试代码,确认模型是否正确取出firstname:
if($result){ // 临时打印返回的用户数据 var_dump($result); die(); // 原有的Session赋值代码... }
登录后查看输出对象,确认是否包含firstname属性及对应有效值。若不存在该属性,说明数据库字段名错误或查询逻辑有问题。
3. 确认Session是否正确存入数据
若模型返回了正确的firstname,可在Session赋值后立即验证存储情况:
$this->session->set_userdata($auth_details); // 临时打印当前Session所有数据 var_dump($this->session->userdata()); die();
检查输出数组中是否存在firstname键及正确值。由于你能正常取出username,Session功能大概率正常,此步骤主要排查赋值环节的问题。
4. 检查视图代码的拼写
确认视图中Session键名拼写完全一致:
<h2> Welcome <?php echo $this->session->userdata('firstname'); ?> </h2>
注意firstname的大小写需与控制器auth_details数组的键完全匹配,CodeIgniter的Session键区分大小写。
额外排查:明确指定查询字段
若以上步骤均无问题,可修改模型查询,明确指定需要的字段,避免select('*')可能出现的意外:
public function login_user($data){ $this->db->select('firstname, lastname, username, password'); // 明确列出所需字段 $this->db->where('username', $data['username']); $this->db->where('password', $data['password']); $this->db->from('users'); $this->db->limit(1); $query = $this->db->get(); if($query->num_rows() == 1){ return $query->row(); } else { return false; } }
内容的提问来源于stack exchange,提问作者Kimpoy
相关产品推荐
相关产品推荐

