織夢後臺釋出文章提示“標題不能為空”問題解析
阿新 • • 發佈:2018-12-22
- 大家都知道php有個函式htmlspecialchars()是將預定義字串做轉換的,而htmlspecialchars()這個函式在php5.4預設為utf8編碼的
- 一般建站新手站長搭建織夢環境都是用的dedeampz織夢整合環境一鍵搭建的織夢環境,原因就在這裡了,dedeampz搭建完成的CMS網站預設的編碼格式是gbk的
- 如果你安裝的是織夢5.3或者5.6可能沒事,因為dede5.6之前的版本其中php的版本預設配置的是5.3版本的php,但是織夢5.7開始整合其中的php是5.4版本的,而這時的php5.4預設編碼格式跟環境的編碼格式衝突(格式不一致)
- 格式不一致的時候如果你輸入的標題是純英文+數字,這沒問題,能正常使用,因為編碼格式utf-8跟gbk的區別在於中文字元
- 如果你輸入的是中文字元,那麼htmlspecialchars()函式在轉換的時候因為編碼格式不同導致的亂碼是他不識別,所以就直接輸出空,因為他什麼也沒有轉過來,這也就是為什麼你輸入漢語標題提交,卻提示“標題不能為空”的原因!
- 問題分析清楚了,解決方法也很明顯了,下面提供兩種解決方法
第一種:將php的版本切換回5.3版本或者比5.3更早的版本的,這個問題自然就解決了
- 第二種:給htmlspecialchars(函式)新增ENT_COMPAT ,'GB2312'
就是給php的這個函式強制設定編碼格式,這樣也能解決這個問題,具體對應的位置是
①:dede/article_add.php 這個php檔案中查詢
$title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen));
改成
$title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen),ENT_COMPAT ,'GB2312');
②:然後再找到dede/article_edit.php這個php檔案中查詢
$title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen));
改成
$title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen),ENT_COMPAT ,'GB2312');
③:include/ckeditor/ckeditor_php5.php 查詢
htmlspecialchars($value)
改為htmlspecialchars($value, ENT_COMPAT ,'GB2312')
這樣也能解決以上問題