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

[HELP] CI的session选择数据库存储,但是也会在cookies里存一份 咋办?

[复制链接]
发表于 2014-3-7 10:08:56 | 显示全部楼层 |阅读模式
今天做一个东西  需要用户长久登录 然后用户要跑的机子又不支持cookies
于是选择了session存数据库
然后就发现CI的机制是把session存储到数据库的同时还在cookies里面存一份
而且在读取session的时候是先从$_COOKIE中读取 如果没有数据直接就不跑了
然后我把这块重写掉 想直接从数据库取session  然后就发现用户每一次请求都会生成一个全新的session
怎么破啊  有人遇到过么

发表于 2014-12-3 10:04:55 | 显示全部楼层
想用session就必须先支持cookie
 楼主| 发表于 2014-3-7 10:29:48 | 显示全部楼层
补充
刚才没仔细看CI_session类  现在发现CI哪怕是存数据库 也需要用到cookies来存储一个用户对应的session_id
而我现在是完全不启用cookies  就无法获取这个session_id 于是CI认为该用户是第一次请求  所以每次都生成一个新的session_id
那这样的话我貌似需要自己写个方法来根据用户的UA和其他一些数据来自己生成这个session_id?
但是我现在还没有想到一个比较好的处理方式啊
发表于 2014-3-8 20:08:07 | 显示全部楼层
用php原版的session吧
session_set_save_handler()这个函数能做
效果一样
发表于 2014-12-2 22:28:30 | 显示全部楼层
config.php 文件中 关于前缀的设置不能去修改,保持原来的空,$config['cookie_prefix']    = ""; 否则每次刷新网页就会产生新的session_id. 检查和域相关的设置,最好保持默认就好。
发表于 2014-12-3 09:29:33 | 显示全部楼层
如果用户不支持cookie的话,用URL传参数呢

本版积分规则