Сеанс Codeigniter хранится в базе данных, но не работает - PullRequest
0 голосов
/ 23 сентября 2018

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

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 )

Так что моя сессия как-то исчезает:

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

$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;

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

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

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

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

0 голосов
/ 23 сентября 2018

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

$myId='123';
$this->session->set_userdata('userId',$myId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...