当前位置: 首页 > 后端技术 > PHP

PHP表单提交数据丢失问题

时间:2023-03-29 21:38:07 PHP

今天在处理用户的excel导入时,遇到了一个小问题。需求如下:用户导入excel后,使用PHPExcel读取导入的数据,渲染一个表单,用户检查表单确认导入数据的完整性,最终确认入库。但是由于用户excel导入的数据量较大,表单渲染后有6000多条输入,而提交(POST)是直接通过表单提交,所以后台只能读取一小部分之前的数据。跟踪1.查看表单提交请求的完整性通过跟踪提交时的http请求,发现所有数据都正常提交。2、检查请求数据是否超过php或nginx的限制。通过查看RequestHeaders下的Content-Length,发现只有218558B,也就是20KB左右。这绝对不是极限。3、直接通过file_get_contents('php://input')获取原始请求数据由于$_POST直接获取的数据只是一小部分,所以直接使用php://input获取原始输入数据,而当打印出来,发现这次发送得到的数据是完整的。4.通过parse_str函数解析原始请求参数当我用parse_str解析原始输入数据时...$origin=file_get_contents('php://input');parse_str($origin,$result);var_dump($result);报错Warning:parse_str():Inputvariablesexceeded1000增加限制更改php.ini中的max_input_vars至此,我应该明白问题出在哪里了。5.修改php.ini中max_input_var的个数#默认php.ini配置#可以接受多少个GET/POST/COOKIE输入变量#max_input_vars=10000默认配置只允许最大输入请求数(GET/POST/COOKIE)1000个。适当修改php.ini中max_input_var的值后,问题解决。当然,最终的解决方案是通过ajax提交json格式的数据。毕竟修改php.ini的配置并不理想!最后因为没注意到PHP还有这个限制,所以翻到这里,特别感谢@freyo的指点。你是我们的神