【发布时间】:2014-10-01 19:48:26
【问题描述】:
我无法使用 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 会话
拜托,我需要帮助....我不知道尝试更多...谢谢大家
【问题讨论】:
-
代码看起来确实正确,但我首先要确保 $usario 正在设置。 var_dump($usario) 在尝试将其添加到会话之前。也许你的 foreach 没有正确填充它。
-
是的,感谢您的回答。我检查了数组 $usuario 并包含预期的数据。登录控制器,我一直在停止应用程序的流程,并将会话保留在控制器中,但是当您离开该控制器时,无论是通过重定向(“/”,“刷新”)还是通过 URL 手动丢失会话。
标签: php database codeigniter codeigniter-2