php表单提交的数据丢失怎么办

发布时间:2024-03-28 点击:121
php数据丢失的解决办法:首先查看表单提交请求完整性;然后查看请求数据是否超过php或nginx限制;接着直接通过“file_get_contents('php://input')”获取原始请求数据;最后修改max_input_var数量。
php 表单提交的数据丢失问题
今天在处理用户 excel 导入时,遇到个小问题
需求是这样的:用户导入 excel 后,用 phpexcel 读取导入数据,渲染一个表单,用户通过查看表单,确认导入的数据完整性,最后在确认入库。
但由于用户 excel 导入的数据比较多,表单渲染后有超过 6000 个 input, 并且提交时(post)是直接采用的表单提交,导致后台只能读取前面一小部分数据。
跟踪
1.查看表单提交请求完整性
通过跟踪提交时的 http 请求,发现所有数据都正常提交。
2.查看请求数据是否超过 php 或 nginx 限制
通过查看 request headers 下的 content-length 发现只有仅为 218558 b 也就是 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(): input variables exceeded 1000. to increase the limit change max_input_vars in php.ini到这里,我应该明白问题出在哪里了。
5.修改 php.ini 中 max_input_var 数量
# 默认的 php.ini 配置# how many get/post/cookie input variables may be accepted# max_input_vars = 10000默认的配置只允许请求(get/post/cookie)的最大 input 数为 1000 个。
适当的修改了 php.ini 中 max_input_var 的值后,问题解决。
当然,最后是通过 ajax 提交 json 格式数据解决的,毕竟修改 php.ini 的配置还是不太理想!
结束
由于没有留意到 php 还有这个限制,导致在这儿翻车了
更多相关知识,请访问php中文网!

3dmax网格怎么去掉 3dmax网格使用教程
新手想要域名该如何申请?有什么申请方法?
腾讯云服务器怎么还原硬盘
怎样的域名价值高?哪些域名被拍出天价?
云服务器云主机有什么区别 哪些用户适合使用云主机
公司网站打不开云服务器怎么办呢
秒收录并不难,建网站有手段
买了一个ecs云服务器