У меня есть два очень простых контроллера: один для настройки сеанса:

defined('BASEPATH') OR exit('No direct script access allowed');
class Ses extends CI_Controller {


    public function index()
    {
    $this->session->set_userdata('userId', 'myId');
    print_r($this->session->userdata());


    echo '<a href="'.base_url('ses2').'">Ses2</a>'; 
    }
}

И сеансы печати:

Array ( [__ci_last_regenerate] => 1537709001 [userId] => myId ) Ses2

Итак, сессия настроена и работает как надо. Но когда я нажимаю ссылку «ses2», у меня появляется другой контроллер:

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Ses2 extends CI_Controller 
    {


    function index()
    {
        print_r($this->session->userdata());
    }   
}

И я получаю:

Array ( [__ci_last_regenerate] => 1537709217 )

Итак, моя сессия как-то исчезла:

Я использую базу данных для хранения сеансов, это моя конфигурация:

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions1';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';//its your table name name
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;

Странно то, что когда я проверяю базу данных, там есть данные blob.

Я действительно запутался здесь.

2
Pecooou 23 Сен 2018 в 16:34

2 ответа

Лучший ответ

На самом деле это была проблема с Codeigniter 3.1.6 и PHP 7.1.7. Я только что обновил CI до последней версии.

0
Pecooou 25 Сен 2018 в 10:38

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

$myId='123';
$this->session->set_userdata('userId',$myId);
-1
Gurpal singh 23 Сен 2018 в 14:11