Как установить сеанс в базе данных 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();