Как установить сеанс в базе данных codeigniter 3?

Я использую новую версию (3.0.0). CodeIgniter, и у меня возникла новая проблема, мои сеансы не работают. Я имею в виду, что код в контроллере верен, потому что ошибок нет, но когда я пытаюсь напечатать переменную PHP в представлении, ничего нет.

Я проверил свою таблицу на сервере MySQL, и ничего, я не сейчас, в чем проблема. Я ставлю свой код config.php. (Я не понимаю много чего в этой новой версии)

$config['sess_table_name']              = 'ci_sessions';
$config['sess_driver']              = 'database';
$config['sess_cookie_name']             = 'ci_session';
$config['sess_expiration']          = 7200;
$config['sess_save_path']               = NULL;
$config['sess_match_ip']                = FALSE;
$config['sess_time_to_update']      = 300;
$config['sess_regenerate_destroy']  = FALSE;

Мне нужно добавить первую строку для сеансов "make", я не знаю, правильно ли эта конфигурация делает сеансы в базе данных.

Если у кого-то есть такая же проблема, помогите мне пожалуйста:( Мой класс сеанса не редактировался.

Ответ 1

Прежде всего таблица сеансов CI3 и таблица сеансов CI2 (Сохранение сеанса Данные в базу данных) отличается

Новая таблица сеанса структура

 CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(40) NOT NULL,
    `ip_address` varchar(45) NOT NULL,
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
    `data` blob NOT NULL,
    PRIMARY KEY (id),
    KEY `ci_sessions_timestamp` (`timestamp`)
);

Вторые Они поддерживают старые переменные конфигурации с новой конфигурацией но лучше использовать новую конфигурацию

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions';
$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;

Подробнее см. docs

Несколько новых функций (функций), доступных для библиотеки сеансов.

Помните Не забудьте загрузить его через autoload.php или загрузить $this->load->library('session');, прежде чем использовать его.

Ответ 2

Если вы добавили "первую строку" (т.е. sess_table_name), чтобы заставить ее работать, это связано с тем, что для вашего значения sess_driver установлено значение база данных. Взгляните на список поддерживаемых драйверов, и вы увидите, что для сеансов на основе файлов он будет по умолчанию. Другими словами, если вы удалите эти строки, он должен работать:

$config['sess_table_name']          = 'ci_sessions';
$config['sess_driver']              = 'database';

Ответ 3

Удалите эту добавленную строку и установите:

$config['sess_save_path'] = 'ci_sessions';

Остальная часть кода должна быть в порядке. Ссылка на документы.

Ответ 4

Попробуйте следующее:

$config['sess_save_path'] = sys_get_temp_dir();