最近在用织梦cms时,发现一个问题,在注册会员第二步完善详细资料时,发现后面的两个复选框checkbox数据无法写进数据库,经过一番分析,终于找到了解决办法,下面分享给遇到同样问题的朋友。
工具/原料
dedecms5.7
方法/步骤
1
这里面我随便选择几个值,然后点击完成注册。然后到数据库查看
2
其他值都写进去了,但发现语言(language)和性格(nature)两个字段的值还是空的,而这两个字段都是checkbox类型数据。
3
问题出现在根目录下的include/filter.inc.php文件中,打开该文件,里面只有一个_FilterAll($fk, &$svar)函数,问题出在粗心的程序员把下面这几句代码 if (!$magic_quotes_gpc) { $svar = addslashes($svar); }写到了else{.....}的外面了,而addslashes函数的参数只能是字符串,不能是数组。而checkbox表单提交的正好是以数组形式的数据,这也说明了为什么其他数据没问题,而恰恰这两个checkbox存在问题。
4
可以用几句代码测试下addslashes这个函数。$arr=array('小强','旺财','如花');$arr=addslashes($arr);print_r($arr);
5
测试结果报错了,说明addslashes确实无法作用于数组。
6
解决办法很简单,把 if (!$magic_quotes_gpc) { $svar = addslashes($svar); }这几句放到else{...}的范围之类然后保存。
7
经过测试已经正常了,希望对大家有帮助。
注意事项
织梦版本dedecms5.7sp1 UTF-8
