CI_TC 发表于 2018-6-29 09:09:28

网站在关闭浏览器后为什么不需要重新登录

网站登录成功后,直接关闭浏览器,再打开浏览器为什么可以直接访问不需要重新登录?这是什么鬼?
查找论坛、贴吧,说是CI框架session的有效期问题,session_id存在cookie中,cookie设置了有效期存在了内存中,关闭浏览器,cookie还存在,所以不用重新登录,只要在设置cookie的时候不要设置过期时间,关闭浏览器就直接清除cookie了。
按照这个说法,根据论坛代码,改了session类,windows下关闭浏览器需要重新登录了,为什么ubuntu下还是不行呢,还是可以直接访问

Hex 发表于 2018-6-29 18:25:18

要关闭浏览器,好像只关闭 Tab 标签页不行,主要是看一下 cookie 是不是浏览器关闭就失效,Cookie 默认就是关闭浏览器就失效。可以通过浏览器调试器看一下。

CI 3 的 Session 就是 PHP 原生 Session,等价于 $_SESSION。

zhaohua0317 发表于 2018-6-29 14:12:24

感觉不是CI的问题,你用PHP直接写一个session试试

CI_TC 发表于 2018-7-3 16:35:20

Hex 发表于 2018-6-29 18:25
要关闭浏览器,好像只关闭 Tab 标签页不行,主要是看一下 cookie 是不是浏览器关闭就失效,Cookie 默认就是 ...

我说的就是关闭浏览器,你可以试下,用ci自带的session类,不做任何改动,关闭后再打开还是登录状态

Hex 发表于 2018-7-3 16:56:41

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

首先,CI3 自带的 Session 就是 PHP 原生 Session。另外,看一下 cookie 有效期是不是写着『浏览器关闭就失效』,是才行,不是则需要进行一些设置。

CI_TC 发表于 2018-7-4 08:55:03

首先,感谢你的回答;其次,你说的情况都满足;最后,我已经说了你可以自己试下,你就明白了

Hex 发表于 2018-7-5 19:03:18

CI_TC 发表于 2018-7-4 08:55
首先,感谢你的回答;其次,你说的情况都满足;最后,我已经说了你可以自己试下,你就明白了 ...
这个我试过才来回答的呀,我这里是正常的,所以我才需要了解你那里的情况,才能确定你是什么问题。

对于 Session 是否过期,不管是 CI 的还是 PHP 的,最重要的都是 cookie 的有效期,如果 cookie 有效期是浏览器关闭就失效,不管你用的什么语言,Session 都会过期,因为实现 Session 的基础是 Cookie。而如果 cookie 有效期已经是关闭浏览器就失效,如果关闭了没失效,那就是浏览器的 BUG,这已经和 PHP 没关系了。

rfrkk 发表于 2018-7-28 09:10:26

此类问题我遇过,经数多天的测试和请教他人,后来解决了

我来说说问题的原因:

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

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

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

1.使用memcache

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

希望对你有帮助

CI_TC 发表于 2018-8-3 10:30:39

Hex 发表于 2018-7-5 19:03
这个我试过才来回答的呀,我这里是正常的,所以我才需要了解你那里的情况,才能确定你是什么问题。

对于...

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