如何在CodeIgniter中使用会话表
我是新的代码点火器,想问一下如何使用数据库中会话表的会话。 我已经用这个结构创建了会话表如何在CodeIgniter中使用会话表,codeigniter,session-variables,sessionid,Codeigniter,Session Variables,Sessionid,我是新的代码点火器,想问一下如何使用数据库中会话表的会话。 我已经用这个结构创建了会话表 CREATE TABLE `sys_sessions` ( `session_id` VARCHAR(40) NOT NULL DEFAULT '0' COLLATE 'utf8_unicode_ci', `ip_address` VARCHAR(16) NOT NULL DEFAULT '0' COLLATE 'utf8_unicode_ci', `user_agent` VARC
CREATE TABLE `sys_sessions` (
`session_id` VARCHAR(40) NOT NULL DEFAULT '0' COLLATE 'utf8_unicode_ci',
`ip_address` VARCHAR(16) NOT NULL DEFAULT '0' COLLATE 'utf8_unicode_ci',
`user_agent` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
`last_activity` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`user_data` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
PRIMARY KEY (`session_id`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;
并使用两个控制器来测试所使用的会话。首先,我运行set_session_test()控制器
public function set_session_test()
{
$this->load->library('session');
$this->session->set_userdata('username', 'Jhon');
$this->session->set_userdata('email', 'jhon@gmail.com');
echo "<pre>"; print_r($this->session->all_userdata()); echo "</pre>";
}
然后我运行get_session_test()检查它的session值是否仍然存在
Array
(
[session_id] => 1b10e3671728804a63266bb9295b7e5d
[ip_address] => 127.0.0.1
[user_agent] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
[last_activity] => 1387619831
[user_data] =>
)
不幸的是,我没有找到我存储的任何用户名和电子邮件会话。我检查表sys\u session,它创建了两行session\u id
Thx提前..在CodIgniter中已经有存储会话的规定
`user_agent` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci'
创建数据库表后,可以在config.php文件中启用数据库选项,如下所示:
`user_agent` VARCHAR(250) NOT NULL COLLATE 'utf8_unicode_ci'
当数据库中的
user\u agent
字段太短时,会发生此行为:
实际上,当您计算当前用户_代理中的字符数时,您的字符数超过了50个,因此CI在数据库中找不到与此用户_代理的任何会话,因为以前存储的会话被截断为50个字符
试着扩大这个领域,它会解决你的问题:
我认为
$this->laod->library('session')代码>删除。打开autoload.php
添加此$autoload['libraries']=array('database','session')代码>。您的控制器没有调用会话库。在get\u session\u测试中
删除$this->session->userdata()
两行。这是我的猜测…你可以试试。Thx brod,我会试试。。
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`)
);
$config['sess_use_database'] = TRUE;
`user_agent` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci'
`user_agent` VARCHAR(250) NOT NULL COLLATE 'utf8_unicode_ci'