如何解决php表单提交的数据丢失的问题

发布时间:2020-07-16 14:13:49

来源:亿速云

阅读:66

作者:Leah

这期内容当中小编将会给大家带来有关如何解决php表单提交的数据丢失的问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。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表单提交的数据丢失的问题了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

php 表单提交渲染问题,如何解决php表单提交的数据丢失的问题相关推荐

  1. c语言链表交换,求单链表的数据交换解决思路

    当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net  网友分享于:2013-11-04  浏览:14次 求单链表的数据 ...

  2. asp.net接受表单验证格式后再提交数据_如何解析 el-form-renderer 表单渲染器1.14.0...

    DEEPEXI 大前端 常人道,一入开发深似海,技术学习无止境.在新技术层出不穷的前端开发领域,有一群身怀绝技的开发,他们在钻研前沿技术的同时,也不忘分享他们的成果,回馈社区.下面,就由小水滴带大家看 ...

  3. action无法传参数给html页面,HTML 解决form表单提交时,action url中参数无效问题

    这篇文章主要为大家详细介绍了HTML 解决form表单提交时,action url中参数无效问题,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...

  4. 解决使用Ajax 前台提交表单到后台,但输出为问号的中文乱码情况

    解决使用Ajax 前台提交表单到后台,但输出为问号的中文乱码情况 情况如下: 在web.xml文件中已经配置了,如下的spring的Filter <filter><filter-na ...

  5. jsp表单提交中文乱码的解决

    jsp表单提交中文乱码的解决 <%@ page language="java" contentType="text/html; charset=utf-8 &quo ...

  6. ASP技巧实例:几行代码解决防止表单重复提交

    在很多情况下都需要防止相同的表单被多次提交,很多人的实现方法都比较复杂(代码数量超过几十行!!)下面提供一种只需使用几行代码的方法,轻松地实现了防止用户刷新多次提交表单和使用后退钮重复多次提交表单. ...

  7. jquery表单ajax json数据,jquery序列化form表单使用ajax提交后处理返回的json数据

    1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...

  8. ajax提交成功清空表单,Ajax提交数据后,清空form表单

    按钮不同,页面相同,还需要显示的数据不同,这里会由于页面的缓存问题,导致,每次点开这个页面显示的数据相同. 这不是我们想要的.这就需要清楚表单数据了. 如下: $('#myform')[0].rese ...

  9. 摆摆控件,就可以实现多功能(提交、修改、浏览)的表单了[原]

    最近封了一个简单的类库,主要目的是帮助实现简化制作表单页面的工作.使得制作一个具有提交.修改.浏览功能的表单页面,只需要摆好控件再写很少量的代码即可.在需求发生变动需要调整UI的时候,也仅是调整控件的 ...

  10. layuiajax提交表单控制层代码_Ninja Forms:免费的联系表单插件,却提供了付费表单才有的功能【视频+图文】...

    Ninja Forms不仅能够可视化创作询盘表单,还能记录询盘.添加隐藏字段.添加反垃圾验证.提交表单时可设置多个动作,这在Wpforms插件中可都是付费功能,同时,Ninja Form激活安装量一百 ...

最新文章

  1. 如何下载flash离线安装包
  2. poj3686(最小权值完美匹配)
  3. 26进制(字母)转十进制算法
  4. 虚继承c语言例子,C/C++ 多继承{虚基类,虚继承,构造顺序,析构顺序}
  5. Jenkins+Gradle+Git+Pyger+二维码搭建Android自动打包平台
  6. Android 插件框架机制之Small
  7. 对计算机图形学知识总结第二版,计算机图形学入门总结!
  8. HDU Problem - 5938 Four Operations
  9. vavr_使用Vavr在Java 8流中更好的异常处理
  10. laravel安装laravel-ide-helper扩展进行代码提示(二)
  11. 完全清除一个带包的项目文件的方法
  12. Spring Boot系列教程五:使用properties配置文件实现多环境配置
  13. 基于Python的电子教室软件中远程关机功能的原理与实现
  14. 记一个有趣的Java OOM!
  15. 3.php基础(控制语句,函数,数组遍历)
  16. OS开发(Objective-C)常用库索引
  17. Worker小Demo
  18. php实现室内地图导航,概述-室内地图 JS API | 高德地图API
  19. android11 前摄相头隐藏闪光灯图标
  20. 《C++游戏编程入门 第四版》的例子Blackjack-

热门文章

  1. python关于csv的查询系统_使用Python对csv文件操作
  2. php前端代码隐藏,php – Yii2 htaccess – 如何隐藏前端/ web和后台/ web完全
  3. hashtable允许null键和值吗_HashMap 和 Hashtable 的 6 个区别,最后一个没几个人知道!...
  4. php和js封装函数,介绍javascript-ecma中的几种封装函数
  5. git branch看不到分支_这份Git 日常操作清单,你都用到了吗
  6. java jdbc 参数 转义_jdbc URL中的各个参数详解
  7. poj 1961 KMP的应用
  8. elasticsearch基础查询
  9. thymeleaf 的hello world
  10. JQuery事件方法