织梦会员投稿多选(checkbox)类型数据提交为空BUG修复

织梦会员投稿多选(checkbox)类型数据提交为空BUG修复

阅读995评论0
特征:
免费

所有作品,均为手写代码。部分样式或代码移植或仿造自互联网(如有侵权,出示著作权证书联系博主删除),所有代码不能用于非法站点(色情、暴力、博彩、政治类站点)。请尊重作者的劳动成果!

购买/下载暂无演示 分享海报

今天在用织梦会员中心投稿的时候,发现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))

把原来的替换成这个就可以了。


哎,本人不想表达了,都是眼泪.......


本文原创,转载请表明出处

0 位网友评论:

欢迎来评论

请填写验证码

1、通过本站购买模板/插件/源码,均享有永久售后服务(仅软件现有功能,不包含开发新增)

2、文章中都有说明教程,在使用过程中遇到问题可以咨询博主。

3、静态HTML页面模板可转换成CMS模板,服务费用100元一页(总费用可协商)。

4、本站的静态HTML页面模板凡超过400元的可免费转换CMS模板一次。

5、购买源码类提供一次免费安装服务(需提供服务器或主机信息)。

6、模板/插件/源码二次打开,此服务按量收费,如有需要,请先和博主商谈报价。

7、自定义模板服务每页100元,如需多终端兼容,每页150元。

8、定制插件服务,300元起(具体看功能需求)。

9、定制系统服务,请整理需求文档和预算,价格具体和博主协商。

10、若有其他问题的网友可联系博主沟通,博主会的一定教(如果问题很复杂,请详谈劳务费哈)。