DEDE织梦教程

【DEDE后台】dede后台部分页面错误;htmlspecialchars问题
时间: 2024-10-11 04:58:43 浏览次数:5
DEDE织梦cms常用的参数标签汇总、以及操作过程中的一些bug问题解决方法,dede网站二开,以下龙腾飞网络科技-小吴在建站实操中笔记记录,织梦dede建站教程保存使用非常方便:【DEDE建站教程】dede后台部分页面错误;htmlspecialchars问题dede网站,GBK2312版本会出现的问题,htmlspecialchars问题,特别在网站搬家后,很多后

DEDE织梦cms常用的参数标签汇总、以及操作过程中的一些bug问题解决方法,dede网站二开,以下龙腾飞网络科技-小吴在建站实操中笔记记录,织梦dede建站教程保存使用非常方便:


【DEDE建站教程】dede后台部分页面错误;htmlspecialchars问题


dede网站,GBK2312版本会出现的问题,htmlspecialchars问题,特别在网站搬家后,很多后台页面点击编辑修改会出现某个php的某一行有问题。


【解决方法】在相关的文件某行后面加上,ENT_COMPAT, GB2312或者是,ENT_COMPAT,'ISO-8859-1'即可,即所以涉及htmlspecialchars的代码都加上即可。下面归纳了一些可能会出现的问题汇总。以及解决修改方法跟大家说下。


dedecms出现这个问题与代码无关,主要是和PHP的版本有关,用的PHP5.4,更换成PHP5.2之后就不会有这个问题了。


问题原因是:php5.4版本中htmlspecialchars在php5.4默认为utf8编码,gbk编码的字符串经过htmlspecialchars 转义后的中文字符串为空了,所以造成添加文章时提示“标题不能为空”,编辑文章时编辑器内容空白。


解决的办法:


1、标题不能为空


修改dede/article_add.phpdede/article_edit.php 这2个文件。


$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 )


如果是其它v5.6用fck编辑器的,就打开include/FCKeditor/fckeditor.php找到大约 76行


$HtmlValue = htmlspecialchars( $this->Value ) ;

替换为

$HtmlValue = htmlspecialchars($this->Value,ENT_COMPAT , GB2312 );


3、系统站点设置网站名称、站点默认关键字、站点描述也是保存后显示为空,打开./dede/file_manage_view.php;


搜索

$content= htmlspecialchars($content);

替换成

$content =htmlspecialchars($content,ENT_COMPAT , GB2312 );


4、dede后台栏目管理--修改栏目--栏目内容修改


出现“/include/ckeditor/ckeditor_php5.php on line 137”


追根溯源,是htmlspecialchars惹的祸,PHP 5.4后GBK编码下默认不支持中文,转换后内容为空。


修改DeDeCMS/include/ckeditor/ckeditor_php5.php文件,137行左右;如下代码:


$out = "<textarea name="" . $name . """ . $attr . ">" . htmlspecialchars($value) . "</textarea>
";

改成如下:

$out = "<textarea name="" . $name . """ . $attr . ">" . htmlspecialchars($value,ENT_COMPAT,'ISO-8859-1') . "</textarea>
";

5、一键生成全站后


include/taglib/tag.lib.php on line 86


$row['tag'] = htmlspecialchars($row['tag']);

修改成

$row['tag'] = htmlspecialchars($row['tag']);




6、打开/include/common.func.php,搜索“function RunApp”,在这个函数的上面添加织梦新版本新增的函数:dede_htmlspecialchars,具体代码如下:

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); 
}


追根溯源,是htmlspecialchars惹的祸,PHP 5.4后GBK编码下默认不支持中文,转换后内容为空。


UTF-8编码 没有任何问题。



系统开发专题地图
Copyright©2011 Guangzhou Longtengfei Network Technology Co., Ltd. 广州龙腾飞网络科技有限公司 粤ICP备18029205号 XML地图