解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法


Posted in PHP onOctober 23, 2015

把PHP的版本从5.2.14升到了5.4.15,升级完后dedecms后台却打开空白,检查了各种权限和文件,都没有问题,找来找去,原来是PHP版本函数的问题,它是用session_register来注册一个session变量,但是在php5.4以上中已经移除了这个功能
解决办法:
找到include/userlogin.class.php,里面有一个keepuser()函数,它是用session_register来注册一个session变量,但是在php5.4中已经移除了这个功能,见官网介绍:

解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法

如果使用的该php版本肯定会出错的,不过我们可以修改下代码:
把@session_register($this->keepUserIDTag); 注释掉,然后改为
if (!isset($_SESSION[$this->keepUserIDTag]))
一共有六个,全部改为下面这样:

if (!isset($_SESSION[$this->keepUserIDTag])) 
//@session_register($this->keepUserIDTag); 
 
$_SESSION[$this->keepUserIDTag] = $this->userID; 
 
if (!isset($_SESSION[$this->keepUserTypeTag])) 
//@session_register($this->keepUserTypeTag); 
 
$_SESSION[$this->keepUserTypeTag] = $this->userType; 
 
if (!isset($_SESSION[$this->keepUserChannelTag])) 
//@session_register($this->keepUserChannelTag); 
 
$_SESSION[$this->keepUserChannelTag] = $this->userChannel; 
 
if (!isset($_SESSION[$this->keepUserNameTag])) 
//@session_register($this->keepUserNameTag); 
 
$_SESSION[$this->keepUserNameTag] = $this->userName; 
 
if (!isset($_SESSION[$this->keepUserPurviewTag])) 
//@session_register($this->keepUserPurviewTag); 
 
$_SESSION[$this->keepUserPurviewTag] = $this->userPurview; 
 
if (!isset($_SESSION[$this->keepAdminStyleTag])) 
//@session_register($this->keepAdminStyleTag); 
 
$_SESSION[$this->keepAdminStyleTag] = $adminstyle;

重新进入后台登录,就可以正常跳转到管理页面了。
因为对PHP并不熟,网上一般都说是data/common.inc.php文件编码的问题,把编码要改为无BOM格式文件保存,居然没有说是php5.4版本的问题
另外一种方法:
在include/helpers/util.helper.php末尾加入以下代码

function fix_session_register(){  
  function session_register(){  
    $args = func_get_args();  
    foreach ($args as $key){  
      $_SESSION[$key]=$GLOBALS[$key];  
    }  
  }  
  function session_is_registered($key){  
    return isset($_SESSION[$key]);  
  }  
  function session_unregister($key){  
    unset($_SESSION[$key]);  
  }  
}  
if (!function_exists('session_register')) fix_session_register();

这样php5.4下dedecms就能正常使用了,希望本文分享的两种方法都可以帮助大家顺利解决问题。

PHP 相关文章推荐
用PHP制作静态网站的模板框架(二)
Oct 09 PHP
通俗易懂的php防注入代码
Apr 07 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
PHP实现的浏览器检查类
Apr 11 PHP
php实现当前页面点击下载文件的简单方法
Sep 22 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
PHP中文竖排转换实现方法
Oct 23 #PHP
浅谈php7的重大新特性
Oct 23 #PHP
php数字每三位加逗号的功能函数
Oct 22 #PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
Oct 22 #PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
Oct 22 #PHP
PHP实现无限级分类(不使用递归)
Oct 22 #PHP
PHP实现递归无限级分类
Oct 22 #PHP
You might like
PHP开发中常用的三个表单验证函数使用小结
2010/03/03 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
Python中每次处理一个字符的5种方法
2015/05/21 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
python自动化报告的输出用例详解
2018/05/30 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
linux下进程间通信的方式
2014/12/23 面试题
毕业论文指导教师评语
2014/12/30 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
mysql知识点整理
2021/04/05 MySQL
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
Java存储没有重复元素的数组
2022/04/29 Java/Android