我已经出现过两次这种问题了,出现了两次就说明第一次没有解决彻底,所以表示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跨页后值为空相关推荐

  1. thinkphp无法登陆,session跨页后值为空

    我已经出现过两次这种问题了,出现了两次就说明第一次没有解决彻底,所以表示thinkphp这个跨页后session为空而无法登陆的问题牵扯很多方面的问题了.经过这两次的研究,我觉得基本上能真正解决它了. ...

  2. 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 ...

  3. python空字典添加元素_python遍历删除字典里值为空的元素报错

    for e in exam.keys(): if exam[e] == '': del exam[e]for e in exam: 使用的是迭代器,它等于:>>> exam = { ...

  4. PHP开启session的函数,ThinkPHP中session函数详解

    在PHP中使用$_SESSION来操作session,而ThinkPHP提供了session的封装函数session().单单这一个函数就实现了session的增删改查的功能.下面我们分别来看其应用与 ...

  5. java 获取对象属性值为空或者非空的属性名称

    目录 1. 获取对象属性值为空的属性名称 2. 复制对象非空属性值 1. 获取对象属性值为空的属性名称 /** * @Title: getNullPropertyNames* @Description ...

  6. php5.5 session,(五)ThinkPHP实践之Session驱动-TTLSA

    Session驱动是指Session在thinkphp中的存储驱动,通过不同的方式,可以将Session存储在不同的"容器"中 对Session有兴趣的的朋友可以查阅相关资料,本篇 ...

  7. think php框架 跨域,ThinkPHP框架实现session跨域问题

    这篇文章主要介绍了ThinkPHP框架实现session跨域问题的解决方法,需要的朋友可以参考下 ThinkPHP的session跨域问题很多开发者都遇到过! 其实不管是ThinkPHP还是php本身 ...

  8. thinkphp中的session的使用和理解!

    session的作用:session可以长时间的保存数据,不丢失. session的常用于: 1.登录,保存登录信息 2.保存购物车信息 3.保存验证码信息 定义session常量 define('W ...

  9. java登陆session用法_java中session用法

    涉及文件  login_do.jsp和sessionCheck.jsp和所有的jsp页面 1.在login_do.jsp登录成功的前面 加上 session.setAttribute("us ...

最新文章

  1. 准爸爸日记——20120502海淀妇幼建档续
  2. python输入y继续运行_python – 如何使Fabric在获取退出状态后继续运行下一个命令:1?...
  3. redis介绍以及使用 ppt_光纤收发器的工作原理以及使用方法介绍
  4. 从零开始数据科学与机器学习算法-人工神经网络与反向传播-09
  5. Python自动化运维:Django之View视图和Template
  6. Android数据存储------1,文件存储
  7. [.NET] : 设定Windows Service启动类型
  8. gdb调试程序函数名为问号,什么原因?step by step解决方案
  9. phoenix表操作
  10. Hadoop生态基础学习总结
  11. npm下载地址的查询与切换
  12. 华为手机老是android自动升级,华为手机系统怎么升级 华为手机升级系统的两种方法...
  13. IDEA 插件开发 发送弹框提示信息
  14. matlab 平滑曲线连接_兔学 | MATLAB由离散数据点绘制曲线图像
  15. Python窗体控制相关方法
  16. 使用Easyexcel对Excel进行读写操作
  17. 国内cn域名过期失效日期计算方式
  18. sklearn入门——逻辑回归
  19. 4-6:关注列表,粉丝列表
  20. 线性表(链式存储结构)C语言

热门文章

  1. 年底送点福利,包邮送55本!Python、大数据、人工智能任你挑!
  2. 轻量级卷积神经网络的设计技巧
  3. 如何看待 2020 届校招算法岗「爆炸」的情况?
  4. 拒绝加班,办公电脑换新低至¥1999
  5. ab串(要求a在b的右面)
  6. 规格选项表管理之保存规格选项表数据
  7. 创业基础(第8章 新企业的创办与管理) 来自高校:全国大学生创新创业实践联盟 分类:创新创业 学习规则:按序学习
  8. 网络工程师_想要记录下来的一些题_1
  9. 编程能力如何突飞猛进?
  10. 从技术角度分析推荐系统案例