织梦dedecms后台发布文章提示“标题不能为空”

时间: 2014-11-12 / 分类: dedecms / 浏览次数: 2,152 views / 0个评论 发表评论

问题根源: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.3版本,等织梦升级支持PHP5.4以后再更换空间服务器。

貌似有些空间发繁体文章也不会遭遇失败

可以将htmlspecialchars($value)替换为htmlspecialchars($value)_decode

$title = htmlspecialchars_decode (cn_substrR($title,$cfg_title_maxlen));

以上并非很好的解决办法,因为htmlspecialchars_decode 和htmlspecialchars是相反的

为了兼容繁体,一般是使用GBK编码,但是偏偏这个函数不支持

所以只好用这个htmlspecialchars($str,ENT_COMPAT,’ISO-8859-1′);

http://www.9enjoy.com/php54-htmlspecialchars/

PS:

发现DEDE其他地方也有这个问题,比如广告编辑,需要编辑后台模版templets/ad_edit.htm

发表评论

你必须 登录后 才能留言!