解决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已经修复此问题;

新开的项目;直接下载官网最新版本即可;

已经存在的老版本的项目;可以按本文章处理;


白俊遥博客
请先登陆后发表评论
  • 最新评论
  • 总共11条评论
白俊遥博客

。。。超。。。:项目是微信里面外联的,我按照你说的效果不是很好,于是想请教一下

2016-11-30 09:34:24 回复

白俊遥博客

YJ军:不能解决, 在config添加只是对全局设置 ,如果要设置单一的生存时间 还是不可以 ,求解决方法

2016-10-26 23:15:39 回复

白俊遥博客

乖乖@王子:这个只能设置某个session的过期时间,如果是所有的session的过期时间呢?

2016-10-12 14:49:11 回复

白俊遥博客
  • 乖乖@王子 回复 乖乖@王子:好吧,我弄错了!谢谢啦!
  • 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 回复

白俊遥博客

ProgrammeMakers白俊遥博客这是一场及时雨啊,爱上你了怎么办

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 回复

白俊遥博客
  • 云淡风晴 回复 yannis苏:或许鸟哥的方案能对你有所帮助;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 回复