html表单

您所在的位置:网站首页 战网有效表单达到数量上限 html表单

html表单

2024-07-15 11:58| 来源: 网络整理| 查看: 265

一、遇到的问题

        编辑机构数据时,post提交数据,发现只有前面的部分字段保存成功,后面的字段并未保存成功。

二、解决

       默认情况下,post提交的数据大小限制“post_max_size”在php.ini中默认设置为8M,经确认,提交的数据并未超过8M,可排除非数据大小导致;

       经排查发现,post提交的表单最大数量限制“max_input_vars”在php.ini中默认设置为1000,经确认,提交的表单数量确实超过了1000,表单数量超过1000,便会截取超出数据,这就是保存时只有部分保存成功,部分保存失败的原因,问题定位成功。

      **查看表单数量的方法:

         network中找到post请求的链接记录,在Headers请求中可看到FormData数据,折叠FormData即可看到post请求时提交的表单数量【见图一】,展开FormData可看到具体请求的表单数据【见图二】,可发现导致表单超限的是机构“company_organize_ids”字段,需要注意的是,company_organize_ids是以数组的形式传递的,虽然后台使用$_POST接收时是一个数组,但是在web端计算提交的表单数量时,是按照多个计算的,所以表单会超限。

三、解决

 方法1、直接修改php.ini中表单提交数量最大限制的配置项 “max_input_vars”为大一些的值,这样便不会受1000的限制了。

 方法2、事实上,通过方法一的改大限制的方式是治标不治本的,而且代码中一次性传递1000个表单数量,会影响执行效率,比较好的解决方案是提交数据时,不要有大量表单的提交,即将大量的表单数据处理整合为一个json或者序列化数据,作为一个表单元素。

     图一

     

   

     图二

     

    四、延伸

    1、此问题为线上环境的问题,在本地环境并未复现,经排查本地为php5.3.5, "max_input_vars"支持php5.3.9及以上版本,php5.3.5并无此配置项,即php5.3.5并无表单数量限制,本地便不会复现。

    2、查看php版本

    *使用phpinfo()函数

    *在linux或者windows命令行 php -v

 

     



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3