今天在用织梦会员中心投稿的时候,发现checkbox类型的数据提交后数据为空,刚开始还以为是储存数据不对了,一看数据库发现竟然为空,是空,空的,我去。。。。
本来懒人懒方法,百度一下,你就知道吧,可竟然没多少这个问题(是用的不多还是。。。),倒是看到有几篇说这种问题的,要不就是答非所问,要是就是这里改改,哪里改改,麻烦的要死。恩,因我太懒了,看到一群群的改动直接close,不太麻烦了,哎,只能自己是研究了。。。。
终于经过我连夜几个小时的突击,终于明白什么情况了。。。下面分享BUG修复过程(说多都是眼泪哈)
BUG说明:
会员中心(member)会员投稿,checkbox类型数据提交为空
BUG处理过程:
1、这里测试了member/archives_add.php,大约在63行
if(!empty($dede_addonfields))
这里是处理附加表数据的,就是你自定义字段的数据都是这里处理的,但是DEDE的获取数据(POST,GET,COOKIE)这些是封装的,
就是说你在业务处理时不用去获取数据,它是自动获取的。
这里var_dump(text)发现是空的(text是checkbox类型数据,提交是array,不懂的去恶补PHP吧)
看来问题关键是在获取数据
2、经过层层分析,最终确定了是include/fiter.inc.php的文件,这里是做前端数据过滤的
函数:_FilterAll()
问题就在这个函数,这是过滤不相关内容的,这里函数初步看不会发现有什么问题,但仔细一看真有问题。
if (!$magic_quotes_gpc) { .......... }
问题是这个if的逻辑,addslashes() 函数返回在预定义字符之前添加反斜杠的字符串(W3C官方说明)
addslashes是处理字符串的,,,你提交过来数组肯定给你搞NULL了。
BUG修复:
让我搞了几个小时的问题,一句话几个字母就OK了,我去,,,咱能用心点不,程序员伤不起哈
if (!$magic_quotes_gpc && !is_array($svar))
把原来的替换成这个就可以了。
哎,本人不想表达了,都是眼泪.......
本文原创,转载请表明出处
欢迎你来评论
1、通过本站购买模板/插件/源码,均享有永久售后服务(仅软件现有功能,不包含开发新增)
2、文章中都有说明教程,在使用过程中遇到问题可以咨询博主。
3、静态HTML页面模板可转换成CMS模板,服务费用100元一页(总费用可协商)。
4、本站的静态HTML页面模板凡超过400元的可免费转换CMS模板一次。
5、购买源码类提供一次免费安装服务(需提供服务器或主机信息)。
6、模板/插件/源码二次打开,此服务按量收费,如有需要,请先和博主商谈报价。
7、自定义模板服务每页100元,如需多终端兼容,每页150元。
8、定制插件服务,300元起(具体看功能需求)。
9、定制系统服务,请整理需求文档和预算,价格具体和博主协商。
10、若有其他问题的网友可联系博主沟通,博主会的一定教(如果问题很复杂,请详谈劳务费哈)。
有 0 位网友评论: