DedeCMS V5.7 与 PHP5.4 以上 出现的各种问题以及解决方案

2015/12/7 23:30:50 人评论 次浏览 分类:PHP

    在给客户迁移PHP的网站的时候,发现网站的前端运行很正常,但是在后台的时候就出了问题,出现了标题不存在的错误,还有登录成功之后无法跳到管理的页面,后面经过一番折腾终于找到一些相关的文章,这里总结一下。其实主要的问题是 DedeCMS V5.7 遇上 PHP5.4 以上

    

    会出现一下问题:

    A.在后台的文章编辑的时候,在提交保存的时候提示 “标题不能为空”,或者是保存成功之后,发现标题被清空了。

    原因:这里主要是编码的问题,DedeCMS V5.7 在 PHP5.4的版本才会出现这个问题,主要是DedeCMS V5.7 在PHP5.4的编码问题。这里要修改文章代码里面方法。PHP版本升级为PHP5.4之后,htmlspecialchars在php5.4默认为utf8编码,gbk编码字符串经 htmlspecialchars 转义后的中文字符串为空,也就是标题为空。


    解决:给htmlspecialchars添加ENT_COMPAT ,'GB2312'参数修改编码默认值

    1、修改dede/article_add.php 和 dede/article_edit.php ,

    将 $title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen));

    替换成 $title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen),ENT_COMPAT ,'GB2312');


    2、include/ckeditor/ckeditor_php5.php 138行 ,将htmlspecialchars($value)替换为htmlspecialchars($value, ENT_COMPAT ,'GB2312')


    其实这里我最终没有用这个方法,因为我是帮客户迁移网站的,网站的数量比较多,如果我去这么改工作量很大的,我最终直接用回PHP5.2 的版本。这里只要的IIS里面设置一下php-cgi.exe的路径就可以,简单很多,没必要做程序的改动。


    B.登录成功之后无法跳到管理的页面

    我在login的页面进行跟踪,发现是用户名和密码是验证成功,到了注册到session的时候就出现了错误这里的原因的表面上都是由于版本的不对应导致,其实这里是因为方法不兼容,PHP 5.4的不支持session_register()

    在userlogin.class.php,查找到 keepuser的方法,把里面的session_register()的那一行注释掉即可,有6行,记得都要注释掉。其实如果这里直接使用低版本的PHP的话可以可以解决问题的。





相关资讯

  • PHP 判断网页请求是否是微信客户端

    最近在做微信的项目,需要深度地了解微信的特性,帮助客户开发出有价值的产品出来。今天项目中需要 PHP判断网页是否是微信打开

    2015/12/7 23:34:53
  • mysql 简单直接的登录方法和修改root密码的方法

    其实还是在迁站点的时候遇到的问题,一开始在新的服务器上安装mysql的时候就随便设置了密码,但是这次迁移我有很多站点,难道我要去改每个网站的配置文件,这样的改动量就很大了。所以还是用了最简单的方案,就是直接修改密码,使与原来的一致。

    2015/12/7 23:32:08

共有访客发表了评论 网友评论

验证码: 看不清楚?