<?phpfunction userErrorHandler() {$e = func_get_args();echo '<pre style="color:red;"><br/>----------运行出错---------:<br/>'.print_r($e, 1).'<br/>----------运行出错---------<br/></pre>';
}
set_error_handler("userErrorHandler");
set_exception_handler("userErrorHandler");function shutdown() {$a=error_get_last();    if($a != null) echo '<pre style="color:red;"><br/>++++++低级错误+++++<br/>'.print_r($a, 1).'<br/>++++++低级错误+++++<br/></pre>';
} register_shutdown_function('shutdown');//如果使用了exit将不运行此脚本switch($_GET['how']) {case 's'://setsession_start();$_SESSION['qidizi'] = rand();echo $_SESSION['qidizi'];break;case 'u'://unsetsession_start();$_SESSION['qidizi'] = 'qidiziUNSET';echo $_SESSION['qidizi'];break;case 'g'://getsession_start();var_dump($_SESSION);break;case 'c'://cleansession_start();echo 'get---------<br/>';var_dump($_SESSION);echo '<br/>edit-------</br/>';$_SESSION['qidizi'] = 'qidiziCLEAN';var_dump($_SESSION);echo '<br/>under clean---------<br/>';$GLOBALS['_SESSION']=null;unset($GLOBALS['_SESSION']);//unset后,session会失效empty($GLOBALS['_SESSION']) && ($GLOBALS['_SESSION']['qidiziReBuid'] = '1');//本句并不能重建/重触发session保存机制session_write_close();//提前保存session改变,discuz清除了session导致保存机制失败,by qidizi,这句话才有效,提交保存var_dump($_SESSION);break;
}

以上是测试代码

关键是在 $GLOBALS['_SESSION']=null; 这句.且

unset($GLOBALS['_SESSION']);

会让session在解析结束保存session的机制失败,看起来是这样的.不懂session自动保存的机制是怎么样的.演示代码中简单的重建并没有触发保存机制.

所以,后来我使用了提前调用方法提前保存我的session更改.

在discuz_application这个类中有对全局变量进行清空,

因为
正面面变量不需要保留,

var $superglobal = array(
        'GLOBALS' => 1,
        '_GET' => 1,
        '_POST' => 1,
        '_REQUEST' => 1,
        '_COOKIE' => 1,
        '_SERVER' => 1,
        '_ENV' => 1,
        '_FILES' => 1,
    );

接着正面的代码就会对它进行清空

foreach ($GLOBALS as $key => $value) {
            if (!isset($this->superglobal[$key])) {
                $GLOBALS[$key] = null; unset($GLOBALS[$key]);
            }
        }

最终效果出现如下的代码功能
关键是在 $GLOBALS['_SESSION']=null; 这句.

使用我上面的测试代码进行演示:
正面的说法指 local.q/t.php?how=s(设置)|g(获取)|u(修改)|c(清空)

操作步骤1 设置 -> 获取 -> 修改 -> 获取     ==== 结果,修改能反馈到获取时的结果中
操作步骤2 设置->获取 -> 修改-> 获取 -> 清空 -> 获取 ====结果:获取修改后数据正常.获取清空的数据失败,获取到的是修改时的数据.(注意这里的测试并没有把提前)

问题就是disucz的init方法导致清空相同的效果.导致某些情况下的使用session会出现清除不掉的问题.简单就是导致验证码输入一次就可以无限提交.

虽然可以使用其它方法来防止.但是这个session的正常的机制被破坏了.问题比较多.

目前我在写这个时,还不清楚使用什么方法可以恢复它的机制.上面的尝试方法并不起作用.

经过测试发现使用 session_write_close();提前保存session理性.即可解决我遇到的问题,不知为何经过清空session后,自动保存会失效.需要主动保存.

discuz清空session,导致session保存机制失败,session无法更新与解决相关推荐

  1. mysql utf8mb4 错_MYSQL保存特殊字符失败,用编码utf8mb4解决错误 Incorrect string value ...解决方法...

    <MYSQL保存特殊字符失败,用编码utf8mb4解决错误 Incorrect string value ...解决方法>要点: 本文介绍了MYSQL保存特殊字符失败,用编码utf8mb4 ...

  2. discuz云平台报调用远程接口失败的问题分析和解决

    根据网络两篇文章整理 问题描述: 当开通或关闭某个云平台服务的时候,报如下错误信息: 调用远程接口失败.请检查您的服务器是否处于内网以及您服务器的防火墙设置. 云平台测试站点的接口文件正常,于是开始在 ...

  3. Java Web —— Session 和 cookie 保存登录信息

    session 与 cookie cookie 与 session 应用于互联网中的一项基本技术--会话(客户端与服务端的交互)跟踪技术,用来跟踪用户的整个会话.简单来说,cookie 是通过在客户端 ...

  4. 常用的认证机制之session认证和token认证

    一.session认证 1.session认证的过程: 前端输入用户名和密码进行登录操作,后端拿到用户名和密码后,会把md5进行加密,加密之后,拿上加密后的密文到用户表中查找密文是否一致,判断用户是否 ...

  5. java cookie全解析(session与cookie的机制和原理)

    http://www.cnblogs.com/agilework/articles/2290240.html 摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚 ...

  6. 深度实现session【包括session入库、session机制和session和cookie的使用方法,完善会话机制(在分布式机器中也能使用)】、无限分类的实现...

    1.session的注意点: @session_start();//这个配置需要注意,session开启中会有影响,所以使用错误抑制符进行限制[并且使用php.ini对session进行自动开启] s ...

  7. 会话机制(session)

    文章目录 实现登录功能 会话机制(session) 会话实现原理 Cookie session会话的常用方法 改造登录功能 实现登录功能 步骤1:数据库当中添加一个用户表:t_user t_user表 ...

  8. cookie机制和session机制的原理和区别

    文章来源:http://www.javawind.net/5b016f382218328f0122e9d65ae41c9e.jhtml 一.cookie机制和session机制的区别 具体来说cook ...

  9. cookie机制和session机制的原理和区别[转]

    文章来源:http://www.javawind.net/5b016f382218328f0122e9d65ae41c9e.jhtml 一.cookie机制和session机制的区别 具体来说cook ...

  10. PHP中session特点及用途,PHP特点之会话机制2——Session及其使用

    会话机制(Session)在 PHP 中用于保存并发访问中的一些数据.这使可以帮助创建更为人性化的程序,增加站点的吸引力. 一个访问者访问你的 web 网站将被分配一个唯一的 id, 就是所谓的会话 ...

最新文章

  1. 从oracle中读取图片,从oracle数据库中读取图片,在jsp?
  2. python语法基础知识总结-python语法基础知识
  3. 清华大学贾宁_《财务思维》_体系结构
  4. Facebook POP 使用指南
  5. 离散数学平面图对偶图和着色问题
  6. SQL之用户自定义函数
  7. mlse均衡器matlab,基于LMS自适应均衡器matlab仿真.doc
  8. 数据科学家访谈录 百度网盘_您应该在数据科学访谈中向THEM提问。
  9. java中 wait()和sleep()的差异
  10. 开发 自我介绍_对于开发者来说,自我是敌人
  11. leetcode - 155. 最小栈
  12. 怎么把geany变成英文_细数Word中英文排版6大坑,我不相信你一个也没有遇到过...
  13. 2007年IT技术走向何方 网络将再掀“酷”革命
  14. 空间索引 - 各数据库空间索引使用报告
  15. MYSQL练习题:访问日期之间最大的空档期
  16. R 语言 | 计算可达矩阵
  17. US1MF-ASEMI贴片薄体封装二极管US1M
  18. 联想笔记本电脑整机拆解
  19. 鸟哥Linux私房菜 第五章 文件权限与目录配置
  20. 飞天特效腾云驾雾特效手机软件制作特效视频的教程

热门文章

  1. python数值分为3种类型_Python数值类型
  2. 高德地图在android上的开发汇总
  3. 算法萌新如何学好动态规划(一)
  4. 痕迹清理 - Linux
  5. c# listbox使用
  6. 给Chrome和Firefox添加js脚本作为插件的方法
  7. asp.net下载的方法1
  8. C++中的const完全解析
  9. (转) Lua使用心得一
  10. Windows Server 2008群集仲裁机制