thinkphp的session设置周期是无效的;
直接的影响就是无法保留用户的登陆状态;
用thinkphp开发的项目;
关闭浏览器后用户就退出了;
即便设置了session周期也没作用;
这个bug存在很久了;
但是thinkphp官网一直没处理更新;
吐槽完毕;下面来解决这个bug;
首先需要在 /Thinkphp/Common/funtion.php 公告函数的第1213行添加如下内容;
如果不是在1213行;就搜索gc_maxlifetime
// 1213行原代码
if(isset($name['expire'])) ini_set('session.gc_maxlifetime', $name['expire']);
// 改成如下代码
if(isset($name['expire'])) ini_set('session.gc_maxlifetime', $name['expire']);ini_set('session.cookie_lifetime', $name['expire']);
原代码:
更改后的代码:
然后在配置项/Application/Common/conf/config.php中添加如下代码
//***********************************SESSION设置**********************************
'SESSION_OPTIONS' => array(
'name' => 'BJYSESSION', //设置session名
'expire' => 24*3600*15, //SESSION保存15天
'use_trans_sid' => 1, //跨页传递
'use_only_cookies' => 0, //是否只开启基于cookies的session的会话方式
),
ok;大功告成;
//***********************************不怎么华丽的分割线**********************************
后来还是不断有亲们的session周期失效;
特贴一份设置正确的项目连接;
bjyadmin:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin
可以尝试下载bjyadmin到本地;
然后在bjyadmin上测试;
如果bjyadmin的session也失效;
那可能是本地环境有问题;
如果bjyadmin的session正常;
而自己的项目session失效;
那就可以确认是自己项目的session配置有错误的地方;
照着bjyadmin抄配置即可;
//***********************************又一个不怎么华丽的分割线******************************
thinkphp官网上最新的3.2.3已经修复此问题;
新开的项目;
直接下载官网最新版本即可;
已经存在的老版本的项目;
可以按本文章处理;
本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客https://baijunyao.com 欢迎捐赠赞赏加入组织创建QQ群及捐赠渠道
新的.旅程 :刚才测试了下,必须在配置文件里设置重新设置name,即'name' => 'BJYSESSION', //设置session名过期时间才能生效,为什么呢
2019-01-10 00:26:59 回复
StopTheWorld :已经试过好久了,但是不可以,麻烦要是有好的解决方法分享我一下,谢谢
2017-01-18 11:29:20 回复
StopTheWorld :您好,我试过了您的方法,可以成功的,但是如果在config.php里边修改的话那么我所有的session都会局限于这个时间,请问我怎么可以只针对session某一字段设置失效时间呢,我尝试过session(array('name'=>'code','expire'=>30));设置时间30s但是总是不成功,请问您有什么好的解决的方法吗?
2017-01-18 11:24:29 回复
。。。超。。。 :项目是微信里面外联的,我按照你说的效果不是很好,于是想请教一下
2016-11-30 09:34:24 回复
YJ军 :不能解决, 在config添加只是对全局设置 ,如果要设置单一的生存时间 还是不可以 ,求解决方法
2016-10-26 23:15:39 回复
StopTheWorld :我最近也遇到了这个问题,请问您现在解决了吗?
2017-01-18 11:25:09 回复
乖乖@KN :这个只能设置某个session的过期时间,如果是所有的session的过期时间呢?
2016-10-12 14:49:11 回复
乖乖@KN :好吧,我弄错了!谢谢啦!
2016-10-17 18:29:47 回复
快乐的刘扬 :3.2.3代码里有那段话,不用加了
2016-09-17 11:18:24 回复
云淡风晴 :恩恩;是的;官方已经改过来了;
2016-09-19 23:07:00 回复
Beverley-7 :感谢
2016-09-01 10:55:16 回复
YYDS :这是一场及时雨啊,爱上你了怎么办
2016-06-24 10:01:35 回复
爱喝白开水 :慕白大神······按图施工,本机正常. 放在 godaddy后.登入功能只要是跨页面 session 都失效. 但 PHP 原生态写法..又可跨页.还有什麼原因呢 ?
2016-06-15 15:29:14 回复
云淡风晴 :我编辑了下文章;在最后给了方案;可以尝试下;
2016-06-15 15:54:44 回复
爱喝白开水 :用你的架構來放OK了.. 謝了
2016-06-21 15:21:59 回复
钟 :谢谢慕白大神······
2016-05-15 21:56:32 回复
▕┃ :仰慕白大神。我是庆阔的同学,没想到百度thinkphp,session时间的问题,东跑西跑,来到这里了。后来我用cookie解决了,不去改session了。
2016-03-23 23:06:50 回复
云淡风晴 :过奖了;哈哈;谢谢捧场;
2016-03-23 23:51:13 回复
yannis苏 :如果是多个session呢?而且每个的session的过期时间都不一样~auth是7200秒,username是1800秒~
2016-03-11 12:20:18 回复
云淡风晴 :或许鸟哥的方案能对你有所帮助;http://www.laruence.com/2012/01/10/2469.html
2016-03-12 22:13:46 回复
夜未央、繁星依旧 :谢了
2016-03-10 13:25:20 回复
云淡风晴 :不客气
2016-03-12 22:11:30 回复
最新评论