После успешной авторизации я получаю массив с информацией о пользователе:
$authdata = array(
'logged_in' => true,
'id_user' => $checked['idUsers'],
'time_auth' => time(),
'status' => $checked['UsersStatus'],
'type' => $checked['UsersTypeAccount'],
);
Затем установите этот массив в сеанс Codeigniter (array $checked
не пуст, есть UserStatus и UsersTypeAccount):
$this->session->set_userdata($authdata);
После перенаправления в profile
контроллера:
redirect('profile');
Эти контроллеры проверяют сеанс пользователя на empty/true:
if ($this->session->userdata("session_id") && $this->session->userdata("type") && (($this->session->userdata("status")){
// Return Success
}
Если выполнить команду var_dump():
var_dump($this->session->userdata("type")).'<br>'; // false
var_dump($this->session->userdata("status")).'<br>'; die(); // false
Я получаю ложное значение, почему поля type
и status
не являются истинными в сеансе?
Издание:
Также я сделал:
var_dump($this->session->all_userdata()); die();
Отклик:
array(5) { ["session_id"]=> string(32) "85d9e0aa1f738c551b4ba649c36f977c" ["ip_address"]=> string(12) "46.32.174.82" ["user_agent"]=> string(109) "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36" ["last_activity"]=> int(1416142399) ["user_data"]=> string(0) "" }
Таким образом, сеанс создается, но без состояния полей, введите
Из учебника:
$newdata = array(
'username' => 'johndoe',
'email' => '[email protected]',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
Важный:
$this->session->set_userdata($authdata);
var_dump($this->session->all_userdata()); die(); // Here I get full session array.
После долгих попыток решить эту проблему я решил:
Установить сеанс:
$this->session->set_userdata($authdata);
Получить сеанс:
$type = $this->session->userdata['type'];
$status = $this->session->userdata['status'];
$session_id = $this->session->userdata['session_id'];
Это помогло мне, может быть, кто-то тоже