5.4php不支持dede的解决方法

想试试织梦的产品,下载了DedeCMS V5.7版本,在本地部署后,正确登录后台的情况下页面没有任何输出和显示(错误登录或密码错误时才有显示),也没有报错。进到脚本调试,发现问题出在登录页login.php中以下部分。

login.php

[php] view plaincopy

  1. ...
  2. $cuserLogin = new userLogin($admindir);
  3. if(!empty($userid) && !empty($pwd))
  4. {
  5. $res = $cuserLogin->checkUser($userid,$pwd);
  6. //success
  7. if($res==1)
  8. {
  9. $cuserLogin->keepUser();//此处以下无输出
  10. if(!empty($gotopage))
  11. {
  12. ShowMsg(‘成功登录,正在转向管理管理主页!‘,$gotopage);
  13. exit();
  14. }
  15. else
  16. {
  17. ShowMsg(‘成功登录,正在转向管理管理主页!‘,"index.php");
  18. exit();
  19. }
  20. echo "ok";
  21. }
  22. ...

到封装userLogin类所在的脚本userlogin.class.php中查看(路径./include/),所用的keepUser()方法代码如下:

userlogin.class.php

[php] view plaincopy

  1. ...
  2. function keepUser()
  3. {
  4. if($this->userID != ‘‘ && $this->userType != ‘‘)
  5. {
  6. global $admincachefile,$adminstyle;
  7. if(empty($adminstyle)) $adminstyle = ‘dedecms‘;
  8. @session_register($this->keepUserIDTag);
  9. $_SESSION[$this->keepUserIDTag] = $this->userID;
  10. @session_register($this->keepUserTypeTag);
  11. $_SESSION[$this->keepUserTypeTag] = $this->userType;
  12. @session_register($this->keepUserChannelTag);
  13. $_SESSION[$this->keepUserChannelTag] = $this->userChannel;
  14. @session_register($this->keepUserNameTag);
  15. $_SESSION[$this->keepUserNameTag] = $this->userName;
  16. @session_register($this->keepUserPurviewTag);
  17. $_SESSION[$this->keepUserPurviewTag] = $this->userPurview;
  18. @session_register($this->keepAdminStyleTag);
  19. $_SESSION[$this->keepAdminStyleTag] = $adminstyle;
  20. PutCookie(‘DedeUserID‘, $this->userID, 3600 * 24, ‘/‘);
  21. PutCookie(‘DedeLoginTime‘, time(), 3600 * 24, ‘/‘);
  22. $this->ReWriteAdminChannel();
  23. return 1;
  24. }
  25. else
  26. {
  27. return -1;
  28. }
  29. }

把@去掉,session_register()报出错误:
     Call to undefined function session_register()
证实了问题来源于此。查手册的描述如下:
"版本:(PHP 4, PHP 5 < 5.4.0)"
"本函数已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。"

查看手册

session_register()在PHP5.4后来的版本中已经多余,可以省去而直接用$_SESSION[‘abc‘] ="" ;

查看Stack Overflow关于此方法的问题。

解决方法:去掉或注释掉所有的session_register(),改用直接存$_SESSION数组。

keepUser()部分

[php] view plaincopy

  1. ...
  2. //session_register($this->keepUserIDTag);
  3. $_SESSION[$this->keepUserIDTag] = $this->userID;
  4. //session_register($this->keepUserTypeTag);
  5. $_SESSION[$this->keepUserTypeTag] = $this->userType;
  6. //session_register($this->keepUserChannelTag);
  7. $_SESSION[$this->keepUserChannelTag] = $this->userChannel;
  8. //session_register($this->keepUserNameTag);
  9. $_SESSION[$this->keepUserNameTag] = $this->userName;
  10. //session_register($this->keepUserPurviewTag);
  11. $_SESSION[$this->keepUserPurviewTag] = $this->userPurview;
  12. //session_register($this->keepAdminStyleTag);
  13. $_SESSION[$this->keepAdminStyleTag] = $adminstyle;
  14. ...

修改后就正常显示了。

我是从织梦主页上下载的"最新"版本,很奇怪难道没有人遇到同样的问题吗。这种问题既然这里能出现,别的部分就无法保证不会有更多这样的隐患存在了。

时间: 2024-08-09 07:03:12

5.4php不支持dede的解决方法的相关文章

让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法转

让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法 最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,firefox,safari,opera,360浏览器(极速模式).搜狗浏览器等浏览器下均没有问题,而在IE8及IE11下发现样式无法显示,然后各种百度啊,最后在 雅朋网 的一个网友帖子的帮助下解决了问题,也参考了 千寻学习网 的资料,先将解决方法总结如下: 首先需要确保你的HTML页面开始部分要有DOC

IE下使用excanvas.js之后动态创建的canvas不支持getContext的解决方法(转)

IE下使用excanvas.js之后动态创建的canvas不支持getContext的解决方法(转) IE下使用excanvas.js之后,动态创建的canvas不支持getContext的解决方法 引入excanvas.js以后,在ie下,文档中的canvas就可以用了,但是如果是通过createElement方法创建的就不行了 var canvas=document.createElement(”canvas”); if(canvas.getContext){ alert(”support

转载------让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法

本文是转载及收藏 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法 最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,firefox,safari,opera,360浏览器(极速模式).搜狗浏览器等浏览器下均没有问题,而在IE8及IE11下发现样式无法显示,然后各种百度啊,最后在 雅朋网 的一个网友帖子的帮助下解决了问题,也参考了 千寻学习网 的资料,先将解决方法总结如下: 首先需要确保你的HTML页面

MySQL不支持事务处理的解决方法

MySQL不支持事务处理的解决方法 2014年07月07日23:20    百科369 MySQL不支持事务处理的解决方法 MySQL数据库默认的存储引擎类型是MyISAM,这种存储引擎类型不支持事务处理. 在MySQL中,只有InnoDB存储引擎类型的数据表才能支持事务处理. 因此,如果想让MySQL支持事务处理,只要将数据表修改为InnoDB存储引擎类型即可.操作步骤如下: 1. 进入到phpMyAdmin主界面,在导航面板中选择要转换为InnoDB存储引擎类型的数据库,例如选择db_xue

xp远程连接server2008不支持网络验证解决方法

故障:"远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您的系统管理员或者技术人员来获得帮助"故障症状:当您使用Windows XP"远程桌面连接"工具去连接Windows Vistas或Windows Server 2008的远程桌面.终端服务时,出现上述故障.故障产生环境:远程桌面连接工具6.0以下版本,或者Windows XP Profressional SP1.SP2.SP3解决方法:1.请升级"远程桌面连接"工具最新6.

让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法

如有雷同,不胜荣幸,若转载,请注明 最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,firefox,safari,opera,360浏览器(极速模式).搜狗浏览器等浏览器下均没有问题,而在IE8及IE11下发现样式无法显示,然后各种百度啊,最后在 雅朋网 的一个网友帖子的帮助下解决了问题,也参考了 千寻学习网 的资料,先将解决方法总结如下: 首先需要确保你的HTML页面开始部分要有DOCTYPE声明.DOCTYPE告诉浏览器使用什么样的

让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法 --转载

最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,firefox,safari,opera,360浏览器(极速模式).搜狗浏览器等浏览器下均没有问题,而在IE8及IE11下发现样式无法显示,然后各种百度啊,最后在 雅朋网 的一个网友帖子的帮助下解决了问题,也参考了 千寻学习网 的资料,先将解决方法总结如下: 首先需要确保你的HTML页面开始部分要有DOCTYPE声明.DOCTYPE告诉浏览器使用什么样的HTML或XHTML规范来解析HTM

windows10远程桌面,出现“出现身份验证错误 要求的函数不受支持...”等错误解决方法

windows家庭普通版,更新补丁后无法远程连接windows server2012,出现以下报错: 解决方法: 1.win + R打开运行,输入 regedit,回车进入注册表 2.找到以下路径 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters 3.如果没有最后两个路径,则进行新创建项目 在Parameters的右侧栏新建项一个DWORD(32位)值

IE6不支持first-child的解决方法

乌龙猫网站昨日刚刚上线,后来在IE6下发现侧边栏的智能浮动中,第一个模块的margin-top不为0,这个原本在CSS中已经定义的样式为: HTML: <div class="sidebar_block"></div> CSS: .sidebar_block:first-child { margin:0; } 遇到IE6不支持first-child伪类不是第一次了,平时都是用jquery解决,只要用一句:$(.sidebar_block:first).css()