用户
 找回密码
 入住 CI 中国社区
搜索
查看: 8810|回复: 17
收起左侧

ci中使用session保存在数据库中为什么看不到

[复制链接]
发表于 2008-10-14 09:57:07 | 显示全部楼层 |阅读模式
$newdata = array

(

'uid'  => '123456',

);


$this->session->set_userdata($newdata);

sessions表已经定义了uid字段,执行以上操作后sessions表插入了一条含session_id的新记录,但是uid字段值不是“123456”,而是默认值。
但是执行$this->session->userdata('uid');可以得到“123456”,是否CI使用数据库保存session时只保存session_id,ip_address,user_agent,last_activity四项?用户自定义的数据都保存到cookie中?那使用数据库保存session信息有何意义?十分感谢!
发表于 2008-10-14 10:44:56 | 显示全部楼层
ci 本身的 session 确实是放在 cookie 中的,至于是不是都放数据库中,我不太清楚,照你说的,可能是那样吧。
不过,我从来不会使用 CI 自带的 Session,呵呵~~~
推荐使用第三方类库,比如 KNDB Session
 楼主| 发表于 2008-10-14 10:54:08 | 显示全部楼层
是否感谢Hex,没有使用过KNDB Session,有使用帮助文档或者官方地址吗?
之前我一直使用MC存储session,不知道能否集成到CI来?
 楼主| 发表于 2008-10-14 11:44:57 | 显示全部楼层
我把http://codeigniter.com/wiki/KNDB_Session/当中的CI_Session类拷贝到了libraries中后,页面报错
Warning: CI_Exceptions::include(application/errors/error_php.php) [function.CI-Exceptions-include]: failed to open stream: No such file or directory in E:\website\www\system\libraries\Exceptions.php on line 161

请问使用KNDB_Session,需要设置php.ini吗?
session.save_path = "c:/tmp"
session.save_handler = files

在c:/tmp中发现了session保存的文本文件,session不是保存到数据库中了吗?在数据库中没有session记录
为什么呢?请求帮助
发表于 2008-10-14 11:52:04 | 显示全部楼层
KNDB 是PHP本地 Session,也可用于 DB,你需要配置一下,你看看他的说明啊。
 楼主| 发表于 2008-10-14 12:08:24 | 显示全部楼层
$config['sess_use_database']        = TRUE;
$config['sess_table_name']                = 'sessions';
配置文件是定义使用数据库的呀,为什么数据库里面没有记录呢?奇怪
 楼主| 发表于 2008-10-14 12:10:07 | 显示全部楼层
我的是PHP5,完全拷贝http://codeigniter.com/wiki/KNDB_Session/中的CI_Session类
不知道报Warning是为什么
发表于 2008-10-14 13:12:40 | 显示全部楼层
楼主可以考虑用 DB_Session 或者 OB_Session
 楼主| 发表于 2008-10-14 14:29:45 | 显示全部楼层
搞定!
使用http://codeigniter.com/wiki/DB_Session/
我自己在sessions表自定义了一个字段uid用于存储用户的UID号,方便做在前用户列表。
session_data存储其他信息,如username、nickname等
$sessions = array
(
        'uid'  => '123',
        'username' => 'hnmazda'
);
$this->db_session->set_userdata($sessions);
var_dump($this->db_session->userdata('uid'));
var_dump($this->db_session->userdata('username'));

uid和username是分开存储的,再次感谢Hex的指导,发现CI越来越好玩了,继续关注......
发表于 2008-10-14 16:23:59 | 显示全部楼层
我用的DB_Session,用户Cookies只保留sessionID

本版积分规则