dedecms在发布文章时编辑框位置出现报错Call to undefined function dede_htmlspecialchars()的解决方法
如遇蓝奏网盘打不开lanzous替换成lanzoux尝试!
现在越来越多的程序都是围绕了更高的php版本进行升级,但是还是比较多比较出名的源码程序还是比较兼容低版本的,比如php5.2也是可以完美运行dedecms、wordpress、ecshop等等源码程序,但是很多空间商为了更多的站长朋友的使用几乎都是把php虚拟主机的php版本升级为5.4+了,但是对于目前很多的模板,也就是dedecms带数据的源码程序,都是在使用dedecms没有升级之前的,而可能会导致某些报错的因素,具体的因素也是找到比较了的,也解决了这个问题: 也就是说为了兼容php5.4+,dedecms源码程序的小编修改了common.func.php文件,做了一些小小的改动,所以当其他下载的模板可能是修改了的,但是没有修改的会导致报错Call to undefined function dede_htmlspecialchars()的报错,这个的原因是dedecms源码新增了一个dede_htmlspecialchars函数。下面风格酷小编就来讲解一下解决方案吧: 首先是进入到我们的会员中心,点击主机管理–控制面板–进入到根目录。然后找到include/ common.fuc.php文件,点击编辑,找到ctrl+f查找function RunApp,然后在这个函数的上面加入以下代码:
function dede_htmlspecialchars($str) {
global $cfg_soft_lang;
if (version_compare(PHP_VERSION, ‘5.4.0’, ‘<'))
return htmlspecialchars($str);
if ($cfg_soft_lang==’gb2312′)
return htmlspecialchars($str,ENT_COMPAT,’ISO-8859-1′);
else
return htmlspecialchars($str);
就这样我们就解决掉了这个问题的所在 是不是很简单的呢? 如果您是用的最新版本的dedecms来整合的话不会出现这样的问题的。
风格酷小编这段时间遇见的程序怪事还是蛮多的,反正就是不知道是啥原因,就是因为不知道是什么原因只能是靠方法进行实现,但是风格酷小编这次发现的问题确实是怪的一种,归根到底就是由于代码的不规范导致的或者是标签的写法问题,但是风格酷小编这次的问题就应该是这个问题,这位朋友的dedecms源码程序在php空间里面已经运行了一年多了,但是朋友在后台自己更新文章的时候,突然发现栏目错乱,这个的意思是什么呢?比如说xxx栏目下没有子栏目,而这个栏目确出现了其他的子栏目,所以说很奇怪,经过风格酷小编数分钟的调式,终于解决了这个问题,接下来风格酷小编就把这个问题就给讨论一下。 首先我们查看一下这位朋友产品栏目调用的代码:
{dede:channelArtlist typeid=’3′ }
{dede:type}
{/dede:type}
{dede:channel type=’son’ noself=’yes’}
{/dede:channel}
{/dede:channelArtlist}
从这样的看上去其实并没有多大的问题,但是更新出来的就不一样了。这里的解决方法就是把子栏目的{dede:channel}标签换成{dede:sql}标签来代替使用。这个要怎么使用呢? 首先是把 {dede:channel} 换成换成 {dede:sql} 标签,也就是换成
{dede:sql sql=’Select * from dede_arctype where reid=~id~ and ishidden !=1 ORDER BY id limit 0,20′}
然后结尾 {/dede:sql} 其中还需要把 href=http://www.dede58.com/a/zhimengjiaocheng/dedefault/'[field:typelink /]’ 更换为: href=http://www.dede58.com/a/zhimengjiaocheng/dedefault/”[field:typedir function=’str_replace(“{cmspath}”,””,@me)’/]” 这样就完美的解决了,那么完整的修改代码为:
{dede:channelArtlist typeid=’3′ }
{dede:type}
{/dede:type}
{dede:sql sql=’Select * from dede_arctype where reid=~id~ and ishidden !=1 ORDER BY id limit 0,20′}
[field:typename/]
{/dede:sql}
{/dede:channelArtlist}
这里需要注意到的是要把这个sql语句中dede_arctype中的前缀dede修改为您的表前缀,您的表前缀的查看方法就不用风格酷小编多说了,如果这个都不会进行查看的话,建议不要进行操作,您联系懂php程序的朋友进行帮您修改,或者会做dedecms建站的朋友即可。风格酷小编说出的这个问题就这么简单的解决了。
目前好多的空间商都针对于php版本进行升级了,目前风格酷的php空间的php版本有5.2、5.3、5.4 、5.6、7.0 ,那么dedecms源码程序可以在5.2和5.3完美的运行几乎是没有出现啥问题,而今天风格酷在接待售后的时候发现一位站长朋友找到我们,说是登录后台上不去,于是乎截图给风格酷小编查看。
从该图中可以查看这个并不是页面找不到的问题,而是500问题的错误,那么出现这样的错误只有两种可能性,一个是文件的权限问题,但是文件的权限问题不会出现这样的提示的,还有一个就是配置的问题。那么这位朋友的这个站点之前是可以完美的运行的,所以出现这样的问题肯定是程序的方面的问题。 于是风格酷小编就百度了一下,确实出现这样的问题还真的不少,有的是白屏,有的是无法运行,总之就是在登录后台这里出现的问题,经过相关的资料发现:session_register()和session_unregister()函数已经在php5.4版本中被废弃了,所以就会出现以上问题的情况,找到问题我们就好办了。 首先是进入到的我们的会员中心–主机管理–控制面板–文件管理。 然后进入到根目录找到include/userlogin.class.php。
找到之后点击编辑,查找如下代码:
@session_register($this->keepUserIDTag);
$_SESSION[$this->keepUserIDTag]=$this->userID;
@session_register($this->keepUserTypeTag);
$_SESSION[$this->keepUserTypeTag]=$this->userType;
@session_register($this->keepUserChannelTag);
$_SESSION[$this->keepUserChannelTag]=$this->userChannel;
@session_register($this->keepUserNameTag);
$_SESSION[$this->keepUserNameTag]=$this->userName;
@session_register($this->keepUserPurviewTag);
$_SESSION[$this->keepUserPurviewTag]=$this->userPurview;
@session_register($this->keepAdminStyleTag);
$_SESSION[$this->keepAdminStyleTag]=$adminstyle;
PutCookie(‘DedeUserID’, $this->userID, 3600 * 24, ‘/’);
PutCookie(‘DedeLoginTime’, time(), 3600 * 24, ‘/’);
将这些代码中的session_register函数给删除掉即可或者使用//进行注释。
这两个的意思就是把session_register函数给删除掉,因为在php5.4版本中使用$_SESSION[]赋值即可搞定,并且这样一目了然.获取和赋值都很方便易懂。 这样操作之后就会正常的进入到后台去操作,发现都是可以正常的操作的,但是唯一的一个问题就是当我们操作完毕之后点击注销,然后又出现这样的操作了,那么既然之前已经说过了session_unregister()函数这个的意思就是销毁变量的,而在php5.4中不能使用,那么我们只能把这个函数修改为unset进行销毁变量,那么这个时候就需要在include/userlogin.class.php文件中,找到如下代码:
@session_unregister($this->keepUserIDTag);
@session_unregister($this->keepUserTypeTag);
@session_unregister($this->keepUserChannelTag);
@session_unregister($this->keepUserNameTag);
@session_unregister($this->keepUserPurviewTag);
织梦模板网 » dedecms在发布文章时编辑框位置出现报错Call to undefined function dede_htmlspecialchars()的解决方法