如何打印使用会话登录的用户的用户名

时间:2017-08-16 14:38:27

标签: php codeigniter session

这是我的用户模型

public function user_login($email, $password)
{
    $this->load->library('session');
    $this->db->where('email', $email);
    $this->db->where('password', $password);
    $query = $this->db->get('users');
    if($query->num_rows() > 0) {
        foreach($query->result() as $row) {
            $data = array(
                'id' => $row->id,
                'username' => $row->username,
                'email' => $row->email
            );
            $this->session->set_userdata($data);
        }
        return 1;
    } else {
        return false;
    }
}

在我的视图中,我有一个div来显示用户的会话用户名

<div>
    <?php echo $this->session->userdata('username'); ?>
</div>

它没有出现什么可能是错的?

当我像这样打印userdata()的内容时

<?php print_r($this->session->userdata()); ?>

我收到回复

Array ( [__ci_last_regenerate] => 1502894606 )

3 个答案:

答案 0 :(得分:0)

简化您的查询

$data = $this->db->where(['email'=>$email, 'password'=>$password])->get('users')->row_array();
if($data){
    $_SESSION['id'] = $data['id'];
    $_SESSION['username'] = $data['username'];
    $_SESSION['email'] = $data['email'];
    return TRUE;
}
else{
   return FALSE;
}

在视图中:

<div>
     <?php echo $_SESSION['username']; ?>
</div>

答案 1 :(得分:-1)

尝试将其打印出来echo $data['username'],其中$data是您从控制器发送到视图的变量

答案 2 :(得分:-1)

如果您的用户名实际上与

一致
$row->username

然后在该数组之后,添加

$this->load->vars( array('username' => $row->username) );

在您看来,您将能够获得用户名

echo $username;

这假设您在设置会话后没有重定向。