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.php 和 dede/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编码 没有任何问题。