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

[Session/Cookie] 网站在关闭浏览器后为什么不需要重新登录

[复制链接]
发表于 2018-6-29 09:09:28 | 显示全部楼层 |阅读模式
网站登录成功后,直接关闭浏览器,再打开浏览器为什么可以直接访问不需要重新登录?这是什么鬼?
查找论坛、贴吧,说是CI框架session的有效期问题,session_id存在cookie中,cookie设置了有效期存在了内存中,关闭浏览器,cookie还存在,所以不用重新登录,只要在设置cookie的时候不要设置过期时间,关闭浏览器就直接清除cookie了。
按照这个说法,根据论坛代码,改了session类,windows下关闭浏览器需要重新登录了,为什么ubuntu下还是不行呢,还是可以直接访问
发表于 2018-6-29 18:25:18 | 显示全部楼层
要关闭浏览器,好像只关闭 Tab 标签页不行,主要是看一下 cookie 是不是浏览器关闭就失效,Cookie 默认就是关闭浏览器就失效。可以通过浏览器调试器看一下。

CI 3 的 Session 就是 PHP 原生 Session,等价于 $_SESSION。
回复 支持 1 反对 0

使用道具 举报

发表于 2018-6-29 14:12:24 | 显示全部楼层
感觉不是CI的问题,你用PHP直接写一个session试试
 楼主| 发表于 2018-7-3 16:35:20 | 显示全部楼层
Hex 发表于 2018-6-29 18:25
要关闭浏览器,好像只关闭 Tab 标签页不行,主要是看一下 cookie 是不是浏览器关闭就失效,Cookie 默认就是 ...

我说的就是关闭浏览器,你可以试下,用ci自带的session类,不做任何改动,关闭后再打开还是登录状态
发表于 2018-7-3 16:56:41 | 显示全部楼层
CI_TC 发表于 2018-7-3 16:35
我说的就是关闭浏览器,你可以试下,用ci自带的session类,不做任何改动,关闭后再打开还是登录状态 ...

首先,CI3 自带的 Session 就是 PHP 原生 Session。另外,看一下 cookie 有效期是不是写着『浏览器关闭就失效』,是才行,不是则需要进行一些设置。
 楼主| 发表于 2018-7-4 08:55:03 | 显示全部楼层
首先,感谢你的回答;其次,你说的情况都满足;最后,我已经说了你可以自己试下,你就明白了
发表于 2018-7-5 19:03:18 | 显示全部楼层
CI_TC 发表于 2018-7-4 08:55
首先,感谢你的回答;其次,你说的情况都满足;最后,我已经说了你可以自己试下,你就明白了 ...

这个我试过才来回答的呀,我这里是正常的,所以我才需要了解你那里的情况,才能确定你是什么问题。

对于 Session 是否过期,不管是 CI 的还是 PHP 的,最重要的都是 cookie 的有效期,如果 cookie 有效期是浏览器关闭就失效,不管你用的什么语言,Session 都会过期,因为实现 Session 的基础是 Cookie。而如果 cookie 有效期已经是关闭浏览器就失效,如果关闭了没失效,那就是浏览器的 BUG,这已经和 PHP 没关系了。
发表于 2018-7-28 09:10:26 | 显示全部楼层
此类问题我遇过,经数多天的测试和请教他人,后来解决了

我来说说问题的原因:

1. session的回收机制,php是以概率计算,所以给session设置一个过期时间非常不妥,会衍生意想不到的状况

2. 设定session.cookie_lifetime会有效,但也会衍生其他的状况,因为session可能没被回收,利用构造请求还是可以使用这个Session ID的值

以下是解决方式 (有兩方法):

1.  使用memcache

2. 为每一个Session值增加timestamp,每次访问之前, 判断时间戳. 过期便把cookie和session清除

希望对你有帮助
 楼主| 发表于 2018-8-3 10:30:39 | 显示全部楼层
Hex 发表于 2018-7-5 19:03
这个我试过才来回答的呀,我这里是正常的,所以我才需要了解你那里的情况,才能确定你是什么问题。

对于  ...

对,session有效期一般是根据cookie当中的session_id是否存在判断的,但是ci框架的session类设计有问题,就会出现我说着这种情况,关闭浏览器,再打开浏览器,打开网站,是已登录状态,根据网上的解答,更换了session类,或者自己继承改写session类,问题解决了。ubuntu下不行,是因为那个ubuntu配置问题,重新装了一个ubuntu,问题解决了

本版积分规则