php提交表单时,元素变量过多导致的问题

提交表单时遇到的小问题

今天公司的财务结算时出现了一个小小的bug。场景大概是这样的:一个表单中有上千个复选框,(先不用管为什么这里设计成有如此多的复选框),有一个js控制着这上千个复选框的同时选中。问题发生在提交表单时,到了控制器层,丢失了一部分参数。

首先想到的是不是传输数据有长度限制,因为记得get是存在长度限制的。检查了method,是post。所以应该不是这个问题。接着查问题,在网上看到出现这个问题的不少,也了解到,nginx服务器对于客户端传输的数据body长度也是有配置的,看了下nginx.conf里的client_max_body_size 为50m。这一千多个参数的大小肯定没有50m,所以应该也不是这个问题。

检查完nginx的配置后,再看下php.ini的配置。
其中有一个post_max_size,配置的值为8m,上千个参数的大小也比这个小。所以应该也不是这层限制。
还有一个配置项:max_input_vars,当时的值是1000,发现和留存下来的参数数量差不多。于是改了2000试了下,重启服务器后。果然,一千多个参数全部能接收到了。

不过可以变通一下,将要传输的大量数组元素进行一次json_encode后传输。这样数组就是一个字符串了,接收时候json_decode就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值