最近在用織夢cms時,發現一個問題,在註冊會員第二步完善詳細資料時,發現後面的兩個複選框checkbox資料無法寫進資料庫,經過一番分析,終於找到了解決辦法,下面分享給遇到同樣問題的朋友。
工具/原料
dedecms5.7
方法/步驟
這裡面我隨便選擇幾個值,然後點選完成註冊。然後到資料庫檢視
其他值都寫進去了,但發現語言(language)和性格(nature)兩個欄位的值還是空的,而這兩個欄位都是checkbox型別資料。
問題出現在根目錄下的include/filter.inc.php檔案中,開啟該檔案,裡面只有一個_FilterAll($fk, &$svar)函式,問題出在粗心的程式設計師把下面這幾句程式碼
if (!$magic_quotes_gpc) {
$svar = addslashes($svar);
}
寫到了else{.....}的外面了,而addslashes函式的引數只能是字串,不能是陣列。而checkbox表單提交的正好是以陣列形式的資料,這也說明了為什麼其他資料沒問題,而恰恰這兩個checkbox存在問題。
可以用幾句程式碼測試下addslashes這個函式。
$arr=array('小強','旺財','如花');
$arr=addslashes($arr);
print_r($arr);
測試結果報錯了,說明addslashes確實無法作用於陣列。
解決辦法很簡單,把
if (!$magic_quotes_gpc) {
$svar = addslashes($svar);
}
這幾句放到else{...}的範圍之類然後儲存。
經過測試已經正常了,希望對大家有幫助。
注意事項
織夢版本dedecms5.7sp1 UTF-8