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

只要配置autoload页面里面加载session的时候已经开始出错了

[复制链接]
发表于 2007-11-21 00:12:16 | 显示全部楼层 |阅读模式
通过ie的httpWatch得到的一个返回的http头里面set-cookie后面多了一个空格,导致ie辨认不出cookie,cookie无法设置,然后导致session失效。
这个问题搞了我一晚上,最后直接重新配置其他地方没做任何改动,只在autoload里面第41行修改成这样:$autoload['libraries'] = array('session');
然后ie就开始不认CI输出的cookie了
不知道有没有其他地球人发现这个问题
 楼主| 发表于 2007-11-21 00:48:32 | 显示全部楼层

刚刚又测试了kohana,也有类似问题

直接上传application文件夹,system文件夹,index.php到网站跟目录下
修改/application/config/config.php第31行为:'libraries' => 'session',

访问index.php产生两个cookie:kohana_session和kohana_session_data
前一个是正确的,後一个前面又多一个空格出来。
 楼主| 发表于 2007-11-21 00:50:56 | 显示全部楼层
疯了
发表于 2007-11-21 10:56:29 | 显示全部楼层
这个问题还真没遇到过,我一直不使用 CI 的 Session 类,都是使用第三方的,比如 DB_Session
发表于 2007-11-21 11:06:33 | 显示全部楼层
表回避问题嘛…… 勇往直前!一定要解决……CI的session问题很诡异的……DB_session和CI的session有区别么?我觉得就是CI的CONFIG里,把DATABASE设置成TRUE就是了。我试验了下DB_session,结果之前的问题还是没有很好的处理掉,用CI的session倒是能对付着用,但是就有可能和其他的cookie发生冲突……还有像discuz那样把session装到SQL里,我觉得也挺不爽的,其实用encrypt 和 user agent联系起来,就挺安全的了,其实discuz不是也是这么干的么
 楼主| 发表于 2007-11-21 11:28:38 | 显示全部楼层
这里是两个浏览器header部分的截图,很明显ie的那个图里面用肉眼就可以看清楚site_session前面多一个空白位置

[ 本帖最后由 gaochao 于 2007-11-21 11:37 编辑 ]

ie中httpWatch截图

ie中httpWatch截图

ff中使用firebug截图

ff中使用firebug截图
 楼主| 发表于 2007-11-21 11:45:14 | 显示全部楼层
这个问题实际上很严重,不管是用不用CI的db存储session,在初始化的时候都要读取cookie来判断session是否继续有效,就是library/session.php里面那个sess_read()函数的动作,如果判断cookie不存在就生成一个新的session,而输出cookie的时候又是错的不能被ie识别(ff居然可以识别),这样根本没办法保持session,用数据库来存储的时候问题更严重,刷一下多一条记录。

[ 本帖最后由 gaochao 于 2007-11-21 11:46 编辑 ]
发表于 2007-11-21 12:29:05 | 显示全部楼层
我截获的包里也带了空格,但是IE和FF测试均正常。你试试autoload里设置session没什么,主要是config.php里面的$config['cookie_domain']    = "";绝对要为空! 不为空,SESSION保留不住的,我一直也是没弄明白这个问题



[ 本帖最后由 DeepMetal 于 2007-11-21 12:31 编辑 ]
 楼主| 发表于 2007-11-21 13:32:32 | 显示全部楼层
DeepMetal  
IE6? IE7?
我是不是人品有问题啊,找了好几个人来测 全都读不出cookie 不管是xp的ie6,ie7 还是vista的ie7
发表于 2007-11-21 13:34:02 | 显示全部楼层
DB_Session 不是 CI 里的 Session,他是自己实现的 Session。
或者使用 PHP 的原生 Session,也有这个第三方的库,在官方 Wiki 里就有。

本版积分规则