咨询电话:
15628812133
21
2019/09

PHP多表单提交,数据丢失导致提交失败的原因和解决方法

发布时间:2019-09-21 16:52:05
发布者:就是帅
浏览量:
0

在一个质量核查的项目中,有一项添加核查数据的功能,比较简单就是提交表单数据到后台,处理一下存进数据库就可以了,但是!在本地测试听正常的情况下,放到了服务器上面,却出现了一些问题,在提交的数据超过三十条的时候,后台接收的数据缺失了,少了一部分,这就很难受,然后我就直接判定是服务器设置问题,应该是服务器设置的json提交数据最大值问题,这里用的服务器环境是windows 2008R2 iis服务器,在 web.config文件中设置


    
      
        
      
    
  

OK设置完成,继续提交测试,结果却是完全没有效果,太难了。然后思路断了,不知道怎么解决,找了很多文档也没有解决思路,最后的最后,看着数据越看越奇怪,如果是json数据被截断了只发送了一般的话,php后台接收的数据应该格式不正确才对,格式不正确怎么还能转换成数组格式的数据打印。接着就去页面查看提交的数据,自己计算了一下如果重复的字段名也算一个字段的话,那么提交的数据字段大概正好在1000个字段的时候断掉了,所以提交的数据不全,但是还能打印出来正确的格式,很明显,不是json数据最大值的问题,而是表单提交最大变量值的问题,一直认为他们的name名称都是一样的,所以跟这个最大变量值应该没关系,现在才算知道用ajax提交的表单,一个input就是一个变量值,PHP默认的是1000最大值,所以出现了这种情况。

max_input_vars.jpg

如何查看提交了多少表单数据,最方便的方法就是打开控制台,在NETWORK中找到你提交表单的连接,如上图。在右边的headers中就有表单数据FormData,我这提交了一条数据input的变量就是26个,所以提交超过20条数据就会报错,知道了问题所在,解决起来就非常快了,直接修改php.ini文件中的 max_input_vars,默认的是1000,这里根据项目需要自行调整就可以了。修改完后重启服务再次提交表单,没有报错,数据也没有丢失,完美解决。

返回列表