Это моя модель пользователей
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 )
упростить ваш запрос
$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>
попробуйте напечатать это так echo $data['username']
где $data
это любая переменная, которую вы отправляете в представление из контроллера
Если у вас есть имя пользователя в строке с
$row->username
Затем сразу после этого массива добавьте
$this->load->vars( array('username' => $row->username) );
И по вашему мнению вы сможете получить имя пользователя
echo $username;
Предполагается, что вы не перенаправляете после настройки сеанса.