Почему Codeigniter не сохраняет мой пользовательский сеанс в базе данных?

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

Это мой config.php

$config['encryption_key'] = 'MY_KEY';

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 0;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

И в моей модели у меня есть это:

foreach ($res as $user) {
$usuario["name"] = $user->name;
$usuario["lastname"] = $user->lastname;
$usuario["date_birthday"] = $user->date_birthday;
$usuario["date_register"] = $user->date_register;
$usuario["last_season"] = $user->last_seasson;
$usuario["email"] = $user->email;
$usuario["contry"] = $user->contry;
$usuario["sex"] = $user->sex;
$usuario["role"] = $user->role;
$usuario["status"] = $user->status;
$usuario["idUsuario"] = $user->id;
}

$this->set_last_season($usuario["idUsuario"]);

$this->session->set_userdata('usuario', $usuario);

И в моем контроллере я пытаюсь просмотреть мою сессию с:

var_dump($this->session->userdata('usuario'));

И я создал свою таблицу сеансов в базе данных с:

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(45) DEFAULT '0' NOT NULL,
user_agent varchar(120) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id),
KEY `last_activity_idx` (`last_activity`)
);

Весь этот код работает без сохранения сессии в базе данных и использования файлов cookie.

Пожалуйста, мне нужна помощь …. я не знаю, что попробуйте еще … Спасибо за все

0

Решение

Итак, я тщательно проанализировал поток своего приложения и обнаружил, что ошибка возникла при перенаправлении с контроллера входа в систему на любой другой контроллер. В то время сессионцы теряли кодигнитер.

Я документировал эту неудачу и увидел, что пострадало гораздо больше людей, и я не верил, что это решение не решено. Поэтому, после тщательного поиска в Google, я нашел интересную статью, в которой описывалась эта проблема, и был предоставлен «патч» для файлов библиотеки Sessions, включенных в систему codeigniter.

В этой библиотеке я использовал все методы исходной библиотеки, но применил ее для использования нативных сеансов. Таким образом, прохождение сеансов между контроллерами не провалилось.

Что, если у кого-то еще возникла такая же проблема, или для будущих разработчиков, которые оставили ссылку в статье, которая является кодом нового сеанса библиотеки.

http://www.philsbury.co.uk/blog/code-igniter-sessions

0

Другие решения

Изменить:

DROP TABLE IF EXISTS `ci_sessions`;
CREATE TABLE `ci_sessions` (
`session_id` varchar(40) NOT NULL DEFAULT '0',
`ip_address` varchar(45) NOT NULL DEFAULT '0',
`user_agent` varchar(120) NOT NULL,
`last_activity` int(10) unsigned NOT NULL DEFAULT '0',
`user_data` text NOT NULL,
PRIMARY KEY (`session_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

за:

DROP TABLE IF EXISTS `ci_sessions`;
CREATE TABLE `ci_sessions` (
`session_id` varchar(40) NOT NULL DEFAULT '0',
`ip_address` varchar(45) NOT NULL DEFAULT '0',
`user_agent` varchar(120) NOT NULL,
`last_activity` int(10) unsigned NOT NULL DEFAULT '0',
`user_data` text NOT NULL,
PRIMARY KEY (`session_id`),
**KEY `last_activity_idx` (`last_activity`)**
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
0