解决thinkphp设置session周期无效的问题

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已经修复此问题;
新开的项目;
直接下载官网最新版本即可;
已经存在的老版本的项目;
可以按本文章处理;

白俊遥博客
请先登录后发表评论
  • latest comments
  • 总共22条评论
白俊遥博客

新的.旅程 :刚才测试了下,必须在配置文件里设置重新设置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 回复