php session 为空,thinkphp无法登陆,session跨页后值为空
我已经出现过两次这种问题了,出现了两次就说明第一次没有解决彻底,所以表示thinkphp这个跨页后session为空而无法登陆的问题牵扯很多方面的问题了。经过这两次的研究,我觉得基本上能真正解决它了。
第一次出现的时候,我以为是目录不可写,检查了半天没发现问题,于是各种百度,才发现别人也有遇得类似问题,就是跨页传递session为空。(温馨提示:不喜欢听流水账的可以略过以下两段,直接看下面的解决措施。)我调试了一下程序,将登陆跳转后的页面print_r($_SESSION),果然为空值。最后查找资料说是要把 use_trans_sid 的值改为 1,于是在配置文件中加了一行:'SESSION_OPTIONS' => array('use_trans_sid'=>1),然后再登陆的时候就好了。
第二次,换到另一个环境的时候又出现问题了,于是我又到网上查资料,很可惜,这次找了半天都没有解决,瞬间感慨国内编程这一块的资源匮乏程度还是挺严重的啊,所以我只有自己摸索了。首先排除目录权限和其他一系列问题后,我意识到这次的问题应该也是php设置的问题。于是我把本地的phpinfo和出问题那台虚拟空间的phpinfo输出来,一行一行比较session那块选项。最后我发现有一行配置不一样,如下图:
这里的session.use_only_cookies的值是on,也就是1,而我本地的是off。我马上意识到是这里的问题了,于是又在配置文件中加了一个参数 'SESSION_OPTIONS' => array('use_trans_sid'=>1,'use_only_cookies'=>0),同时还要在thinkphp/Common/functions.php的550行左右加上一句if(isset($name['use_only_cookies'])) ini_set('session.use_only_cookies', $name['use_only_cookies']?1:0); 因为thinkphp默认没有定义这个选项。瞬间,又能登陆了。
经过这两次的问题,最后,代潇瑞博客总结出一下几点导致不能正常登陆、session传值为空的原因:
1. 首先检查存放session的目录是否可写。
2. 如果您用的是空间的话,有些空间文件数目上线也有限制,比如一个200MB的空间,空间单个文件数不能超过45000,当文件满后,就不能在写入文件了,如果你session路径设置在web目录下,也就会影响session无法写入了。
3. 就是将“use_trans_sid”的值设为1,可以在配置文件中加入“SESSION_OPTIONS' => array('use_trans_sid'=>1)”这行代码,让session可以跨页传值。
4. 这个是最不容易发现的,我找了好半天,网上也没有提到这个。也是session的设置选项问题,在第3点的基础上加一个“'use_only_cookies'=>0”选项,即:“SESSION_OPTIONS' => array('use_only_cookies'=>0,'use_trans_sid'=>1)”,同时还要在thinkphp/Common/functions.php的550行左右加上一句if(isset($name['use_only_cookies'])) ini_set('session.use_only_cookies', $name['use_only_cookies']?1:0); 因为thinkphp默认没有定义这个选项。
不能正常登陆、session传值为空的问题大概就是这几个因素了,如果还有其他原因,我会再次的补充完善。如果您有什么不清楚的,也欢迎与代潇瑞博客交流。
php session 为空,thinkphp无法登陆,session跨页后值为空相关推荐
- thinkphp无法登陆,session跨页后值为空
我已经出现过两次这种问题了,出现了两次就说明第一次没有解决彻底,所以表示thinkphp这个跨页后session为空而无法登陆的问题牵扯很多方面的问题了.经过这两次的研究,我觉得基本上能真正解决它了. ...
- oracle null 关联,oracle关联查询在ps/sql中正常,但是在C#中fill后值为空
SQL代码如下 with t1 as( select b.is_import,b.active_flag,b.last_upd,b.row_id,b.dsig_date,b.vicont_code,b ...
- python空字典添加元素_python遍历删除字典里值为空的元素报错
for e in exam.keys(): if exam[e] == '': del exam[e]for e in exam: 使用的是迭代器,它等于:>>> exam = { ...
- PHP开启session的函数,ThinkPHP中session函数详解
在PHP中使用$_SESSION来操作session,而ThinkPHP提供了session的封装函数session().单单这一个函数就实现了session的增删改查的功能.下面我们分别来看其应用与 ...
- java 获取对象属性值为空或者非空的属性名称
目录 1. 获取对象属性值为空的属性名称 2. 复制对象非空属性值 1. 获取对象属性值为空的属性名称 /** * @Title: getNullPropertyNames* @Description ...
- php5.5 session,(五)ThinkPHP实践之Session驱动-TTLSA
Session驱动是指Session在thinkphp中的存储驱动,通过不同的方式,可以将Session存储在不同的"容器"中 对Session有兴趣的的朋友可以查阅相关资料,本篇 ...
- think php框架 跨域,ThinkPHP框架实现session跨域问题
这篇文章主要介绍了ThinkPHP框架实现session跨域问题的解决方法,需要的朋友可以参考下 ThinkPHP的session跨域问题很多开发者都遇到过! 其实不管是ThinkPHP还是php本身 ...
- thinkphp中的session的使用和理解!
session的作用:session可以长时间的保存数据,不丢失. session的常用于: 1.登录,保存登录信息 2.保存购物车信息 3.保存验证码信息 定义session常量 define('W ...
- java登陆session用法_java中session用法
涉及文件 login_do.jsp和sessionCheck.jsp和所有的jsp页面 1.在login_do.jsp登录成功的前面 加上 session.setAttribute("us ...
最新文章
- 准爸爸日记——20120502海淀妇幼建档续
- python输入y继续运行_python – 如何使Fabric在获取退出状态后继续运行下一个命令:1?...
- redis介绍以及使用 ppt_光纤收发器的工作原理以及使用方法介绍
- 从零开始数据科学与机器学习算法-人工神经网络与反向传播-09
- Python自动化运维:Django之View视图和Template
- Android数据存储------1,文件存储
- [.NET] : 设定Windows Service启动类型
- gdb调试程序函数名为问号,什么原因?step by step解决方案
- phoenix表操作
- Hadoop生态基础学习总结
- npm下载地址的查询与切换
- 华为手机老是android自动升级,华为手机系统怎么升级 华为手机升级系统的两种方法...
- IDEA 插件开发 发送弹框提示信息
- matlab 平滑曲线连接_兔学 | MATLAB由离散数据点绘制曲线图像
- Python窗体控制相关方法
- 使用Easyexcel对Excel进行读写操作
- 国内cn域名过期失效日期计算方式
- sklearn入门——逻辑回归
- 4-6:关注列表,粉丝列表
- 线性表(链式存储结构)C语言