Я не могу сохранить свой пользовательский сеанс в базе данных с 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.
Пожалуйста, мне нужна помощь …. я не знаю, что попробуйте еще … Спасибо за все
Итак, я тщательно проанализировал поток своего приложения и обнаружил, что ошибка возникла при перенаправлении с контроллера входа в систему на любой другой контроллер. В то время сессионцы теряли кодигнитер.
Я документировал эту неудачу и увидел, что пострадало гораздо больше людей, и я не верил, что это решение не решено. Поэтому, после тщательного поиска в Google, я нашел интересную статью, в которой описывалась эта проблема, и был предоставлен «патч» для файлов библиотеки Sessions, включенных в систему codeigniter.
В этой библиотеке я использовал все методы исходной библиотеки, но применил ее для использования нативных сеансов. Таким образом, прохождение сеансов между контроллерами не провалилось.
Что, если у кого-то еще возникла такая же проблема, или для будущих разработчиков, которые оставили ссылку в статье, которая является кодом нового сеанса библиотеки.
Изменить:
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;