1. 程式人生 > >織夢後臺釋出文章提示“標題不能為空”問題解析

織夢後臺釋出文章提示“標題不能為空”問題解析

  1. 大家都知道php有個函式htmlspecialchars()是將預定義字串做轉換的,而htmlspecialchars()這個函式在php5.4預設為utf8編碼的
  1. 一般建站新手站長搭建織夢環境都是用的dedeampz織夢整合環境一鍵搭建的織夢環境,原因就在這裡了,dedeampz搭建完成的CMS網站預設的編碼格式是gbk的
  2. 如果你安裝的是織夢5.3或者5.6可能沒事,因為dede5.6之前的版本其中php的版本預設配置的是5.3版本的php,但是織夢5.7開始整合其中的php是5.4版本的,而這時的php5.4預設編碼格式跟環境的編碼格式衝突(格式不一致)
  3. 格式不一致的時候如果你輸入的標題是純英文+數字,這沒問題,能正常使用,因為編碼格式utf-8跟gbk的區別在於中文字元
  1. 如果你輸入的是中文字元,那麼htmlspecialchars()函式在轉換的時候因為編碼格式不同導致的亂碼是他不識別,所以就直接輸出空,因為他什麼也沒有轉過來,這也就是為什麼你輸入漢語標題提交,卻提示“標題不能為空”的原因!
  1. 問題分析清楚了,解決方法也很明顯了,下面提供兩種解決方法

第一種:將php的版本切換回5.3版本或者比5.3更早的版本的,這個問題自然就解決了

  1. 第二種:給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')

這樣也能解決以上問題