cnjameschan 发表于 2010-4-13 21:28:46

sess_expiration问题求教

使用CI_session(目前不用数据库)
sess_expiration在config设置好像是有效的,在程序中设定,能返回设置的值,但是不会有实际效果,你们是不是有什么经验,介绍一下?config里:$config['sess_expiration']= 10;
程序里设置:
$this->session->sess_expiration=100;
echo $this->session->sess_expiration;    显示出来是100

但是session 10秒后就失效了。

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

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

在线等。。。

zycbob 发表于 2010-4-13 21:56:40

本帖最后由 zycbob 于 2010-4-13 22:05 编辑

那是用cookie实现的

cnjameschan 发表于 2010-4-13 22:06:24

但是ci_session实质就是cookie啊?

zycbob 发表于 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过期,则没有登陆

cnjameschan 发表于 2010-4-13 22:24:09

本来想只用CI_SESSION,这样省得麻烦,但是CI_SESSION好像不能动态设置过期时间的,CI_SESSION在浏览器cookie可以看到,其实也是cookie啊。。
不管如何,还是感谢你的快速响应,呵呵

zycbob 发表于 2010-4-13 22:39:20

用钩子是可以在session启动前改变过期时间设置的

其实,SESSION是保存在服务器的,就算你给SESSION动态设置过期时间,现在你不存在数据库中,如果服务器重启,用户登陆状态就没了
页: [1]
查看完整版本: sess_expiration问题求教