問題現象:
今天在處理客戶問題反饋時候發(fā)現在dedecms5.7版本,當修改編輯文章高級屬性中的“發(fā)布時間”保存后文章標題丟失為空沒有任何顯示 或 在部分瀏覽器下提示“標題不能為空”,導致文章修改后沒有了標題。
導致根本原因:
dede默認在php5.3版本下運行良好,但是如果php升級到5.4,5.5, 5.6版本之后就會出現問題,因為php5.4版本以上php函數htmlspecialchars()是將預定義字符串做轉換的,而htmlspecialchars()這個函數在php5.4或以上版本默認為utf8編碼,如果這時候你的程序是gbk的編碼格式,那么就會導致轉義后的中文字符串為空,也就是標題為空。
解決辦法:給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')
[溫馨提示:如果你已經修改編輯器為百度編輯器了,那么第二步驟的修改原dedecms默認的ckeditor編輯器就不需要修改了。]