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