Сессия CodeIgniter не будет сохранена

Эксперты,

у меня есть небольшая проблема с моими сессиями. Я хочу сохранить свои данные для входа в сеанс следующим образом:

Контроллер проверки входа

$user = $this->user_model->user($email, $password);
$user["logged_in"] = TRUE;
var_dump($this->session->set_userdata($user)); // return NULL? is this correct?
var_dump($this->session->all_userdata()); //return the correct data

Теперь сессия сохраняется до редиректа.

Другой контроллер

var_dump($this->session->all_userdata()); // return session_id,… and a empty user_data array

Я думаю, что у меня такая же проблема с классом корзины покупок.

Кто-нибудь может помочь?


person Kenny Wagenknecht    schedule 16.01.2013    source источник
comment
Вы добавили код для запуска сеанса? Возможно, вам потребуется добавить session_start(); над объявлением класса контроллеров?   -  person Jeemusu    schedule 16.01.2013


Ответы (5)


попробуй это..

$user = $this->user_model->user($email, $password);
$user["logged_in"] = TRUE;
$this->session->set_userdata('user',$user);  //set session of users with a name user.

чтобы получить значение сеанса, которое вы можете сделать..

print_r($this->session->userdata('user')); // prints the user session array..

подробнее о сеансах в CI

person bipen    schedule 16.01.2013

Не знаю почему, но думаю моя история поможет тем, кто столкнулся с такой же проблемой. Моя проблема только в том, что я забыл понизить версию php Wamp, ее php 7.1. Похоже, мой CI не поддерживает php 7.1 или выше. Всего несколько кликов, чтобы понизить версию моего php, и моя проблема решена.

person Remn    schedule 10.07.2018

Я добавил session_start() в основной файл index.php. Работал как шарм после этого.

person radu nicoara    schedule 25.01.2018

Функция set_userdata() не имеет возвращаемого значения, поэтому правильно отображать null на var_dump().

Чтобы сохранить пользовательские данные в сеансе пользователя, вы должны обратиться к руководству здесь

Принимаемый параметр должен быть массивом.

person Vassilis Barzokas    schedule 16.01.2013

хм, попробуйте добавить к ci->session, а затем получить данные

//назначаем объект CodeIgniter переменной

function __construct() {
    parent::__construct ();                     
    $this->ci = & get_instance ();
        }

//добавляем данные в ci сессию

function test(){
     $this->ci->session->set_userdata($user)
}

в другом контроллере назначьте объект CodeIgniter переменной

function __construct() {
    parent::__construct ();                     
    $this->ci = & get_instance ();
        }

и получить пользовательские данные ci

$this->ci->session->all_userdata() 
person Kanishka Panamaldeniya    schedule 16.01.2013