|
很久以前就发现了这个问题,ci的session在ie下会有莫名其妙的问题,有的时候莫名其妙就丢失了。
但偶然又会正常,到网上查了n多的资料,大家都觉得是ci的session处理有问题,我也觉得是这样,所以一直在
找一个合适的第三方扩展,试过了ci wiki上提到的主要的扩展,结果都没有改善。我觉得很纳闷,按理说这么一
明显的问题,ci的开发团队不可能就没点动静,心中甚是不解啊。
我当初以为是客户端的浏览器的cookie设置的原因,应为在大多数情况下,火狐浏览器是没问题的,而ie下
就出现丢失现象,于是我觉得用php原生的session加上数据库应该没问题了吧,于是,我参照那些第三方扩展
想将session中的关于涉及到cooki的操作,去掉,取代用php原生的session,可是奇怪的是,效果任然不明显
我查看数据库中的ci_sessions数据表,发现一件很奇怪的事情:在ie下只要一刷新页面,就会添加多条session记录
而在火狐下打开同一个站点,不管怎么刷新,都只会有同一条记录,不会出现多条。至此我就更加郁闷了,怎么会有这种情况呢!
我百思不得其解,我以为是ci的在调用的session的时候,多次进行了创建,于是我新建一个简单的页面,想脱离开ci框架测试php
原生的session,这个时候我才发现,我调用session_id(),想输出session_id值,结果发现,在ie下每刷新一次页面session_id
就改变一次,而在火狐下却不管怎么刷新始终是一个值。我就更纳闷了,难道php都和ie有"隔阂",这怎么可能。
于是我开始在网上检索关于"ie下session失效的案例",无意之中我注意到
RFC 952规定在域名中不能出现"_" , 在使用中,应尽量避免这种情况。
有网友也说明该问题也会影响到session的效果
于是我修改虚拟站点的域名,将"_"去掉后,很显然,一切正常了。
所以我觉得关于session的问题并不是ci框架本身的问题,应该是我们细节上的问题,还有就是遵循标准时很重要的,否则
只能瞎郁闷!
|
评分
-
查看全部评分
|