Почему сессия является ложной в Codeigniter?

0

После успешной авторизации я получаю массив с информацией о пользователе:

$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.
Теги:
codeigniter
session

1 ответ

0

После долгих попыток решить эту проблему я решил:

  1. Обновите Codeigniter до версии 2.2
  2. После того, как код работал:

Установить сеанс:

$this->session->set_userdata($authdata);

Получить сеанс:

$type       = $this->session->userdata['type'];
$status     = $this->session->userdata['status'];
$session_id = $this->session->userdata['session_id'];

Это помогло мне, может быть, кто-то тоже

Ещё вопросы

Сообщество Overcoder
Наверх
Меню