dedecms出现这个问题与代码无关,主要是和PHP的版本有关,用的PHP5.4,更换成PHP5.2之后就不会有这个问题了。
问题原因是
php5.4版本中htmlspecialchars在php5.4默认为utf8编码,gbk编码的字符串经过 htmlspecialchars 转义后的中文字符串为空了,所以造成添加文章时提示“标题不能为空”,编辑文章时编辑器内容空白。
解决的办法:
标题不能为空
修改 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');
编辑器内容空白
打开 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');
系统基本参数输入中文后显示空白
dedetempletssys_info.htm里面搜索
htmlspecialchars($row['value'])
改成
htmlspecialchars(($row['value']), ENT_COMPAT ,'GB2312')
即可