【发布时间】:2014-01-10 03:37:51
【问题描述】:
我是代码点火器的新手,想问一下如何在数据库中使用会话与会话表。 我已经用这个结构创建了会话表。
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>";
}
结果
Array
(
[session_id] => dd7e0e2266da6481ef45faaa7e3c808b
[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] => 1387619782
[user_data] =>
[username] => Jhon
[email] => jhon@gmail.com
)
然后我运行 get_session_test() 来检查它的会话值是否仍然存在。
public function get_session_test()
{
$this->load->library('session');
$this->session->userdata('username');
$this->session->userdata('email');
echo "<pre>"; print_r($this->session->all_userdata()); echo "</pre>";
}
结果是
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_session,它创建了两行 session_id。问题是
- 这是 ci session 的常见行为吗?
- 那么,如何在 CI 表会话中使用 set 和 get 自定义字段?
- 为什么我移动到另一个页面后创建的自定义字段总是丢失?
- 当我运行 this->session->sess_destroy() 时,为什么它没有删除表会话中的任何会话?
提前谢谢..
【问题讨论】:
-
我认为
$this->laod->library('session');删除。打开autoload.php添加此$autoload['libraries'] = array('database', 'session');。你的控制器没有调用会话库。在get_session_test上删除$this->session->userdata()两行。这些都是我的猜测……你可以试试。 -
谢谢兄弟,我会试试的..
标签: codeigniter session-variables sessionid