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

[HELP] sess_expiration问题求教

[复制链接]
发表于 2010-4-13 21:28:46 | 显示全部楼层 |阅读模式
使用CI_session(目前不用数据库)
sess_expiration在config设置好像是有效的,在程序中设定,能返回设置的值,但是不会有实际效果,你们是不是有什么经验,介绍一下?config里:$config['sess_expiration']= 10;
程序里设置:
$this->session->sess_expiration=100;
echo $this->session->sess_expiration;    显示出来是100

但是session 10秒后就失效了。

如何动态设置这个有效期呢?

想用来实现保存登录状态期限(1周,一个月,永久)

在线等。。。
发表于 2010-4-13 21:56:40 | 显示全部楼层
本帖最后由 zycbob 于 2010-4-13 22:05 编辑

那是用cookie实现的
 楼主| 发表于 2010-4-13 22:06:24 | 显示全部楼层
但是ci_session实质就是cookie啊?
发表于 2010-4-13 22:16:51 | 显示全部楼层
本帖最后由 zycbob 于 2010-4-13 22:20 编辑

没有,session是session , cookie是cookie,
只不过ci的session是依赖cookie保存session_id的

你要做的就是
在用户登录验证通过时, 比如将用户名和随机字符串的加密值 写到用户的cookie里,并根据情况设置过期时间
然后在session中保存需要的标记
每次页面初始化的时候先判断session,如果没有则从cookie中读取数据并解密,取得用户名,与数据库中的数据对比,然后重新设置session,
如果cookie过期,则没有登陆
 楼主| 发表于 2010-4-13 22:24:09 | 显示全部楼层
本来想只用CI_SESSION,这样省得麻烦,但是CI_SESSION好像不能动态设置过期时间的,CI_SESSION在浏览器cookie可以看到,其实也是cookie啊。。
不管如何,还是感谢你的快速响应,呵呵
发表于 2010-4-13 22:39:20 | 显示全部楼层
用钩子是可以在session启动前改变过期时间设置的

其实,SESSION是保存在服务器的,就算你给SESSION动态设置过期时间,现在你不存在数据库中,如果服务器重启,用户登陆状态就没了

本版积分规则