Thinkphp5 的sesssion在同一个控制器不同的方法无法获取session的原因和对策
2018-07-17 01:23
295 查看
版权声明:博文转载请注明来自:https://blog.csdn.net/piaobodewu https://blog.csdn.net/piaobodewu/article/details/81074279
这一段在用thinkPHP5开发微信小程序接口的时候,在同一个控制器一个方法中存入session,在另一个方法中取出session,一直都是无法取出。
查阅各种资料得到原因:thinkPHP5里面的session是给浏览器用的,非浏览器的方式是没有办法访问到那个session的,只能用其他方式来代替session。
对策:
1.(推荐)使用TP5自带的缓存方法
可以完美代替session,甚至可以每条手动设置时间,比session更方便,
(用过tp5自带session的肯定知道,session时间一般是固定的,用起来很僵硬)。
//设置缓存(有效期3600秒) Cache::set('name',$value,3600); //获取缓存数据可以使用: Cache::get('name');
提醒一下,如果$value是数组的话要先json_encode()编码成字符串再用
2.Redis方法(此方法稍微麻烦一些)
按照教程在服务器上配置好redis数据库
使用方法直接上代码:
//存入redis //开启redis数据库服务 $redis = new Redis(); //连接ridis数据库 $redis->connect('127.0.0.1', 6379); //存入数据(有效期3600秒) $redis->set($sessioncode,$value, 3600); //取出redis //开启redis数据库服务 $redis = new Redis(); //连接ridis数据库 $redis->connect('127.0.0.1', 6379); //取出数据 $data = $redis->get($session);
同样,提醒一下,如果$value是数组的话要先json_encode()编码成字符串再用
3.使用memcache
上述三种方法均可,建议使用第一种。
(本文为原创文章,转载请注明来自:http://www.cnblogs.com/piaobodewu/)
阅读更多相关文章推荐
- Thinkphp5 的sesssion在同一个控制器不同的方法无法获取session的原因和对策
- Thinkphp5.0 再进行api接口开发的时候,sesssion再同一个控制器不同的方法是无法获取session的。
- 同一个控制器中无法获取session
- aspx里构造函数里无法使用session,需要重写一个方法放在load里面就能正常使用session了
- 一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法
- thinkphp框架将一个方法解析成.html文件的原因以及解决的方法
- 利用不同的方法将同一个Bitmap转为Drawable时,两个Drawable的高度和宽度不一致的原因分析
- 获取任意一个storyboard的视图控制器的方法
- 一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法
- 当获取相似数据时,使用不同方法调用不同sp,但是使用同一个方法去用IIDataReader或者SqlDataReader读取数据时需要判断column name是否存在。
- 一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法
- 一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法
- 在ASP.NET中使用IHttpHandler处理请求(如自实现AJAX)时,无法获得Session(或者说是Session 为 null)的原因及解决方法
- DOCKER 无法获取使用宿主机DNS 的原因,解决方法
- thinkphp框架写的项目在nginx下无法正常访问报错的原因以及解决方法
- Win7系统无法上网提示错误651找调制解调器报告了一个错误的原因及解决方法
- 一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法
- MVC页面不同控制器下的方法调用同一个后台函数
- PHP开发中session无法获取和保存问题解决方法!
- thinkphp(tp)框架封装一个自己写的方法到类里面.可以在其他控制器里面调用