php表单提交的数据丢失怎么办_后端开发

php表单提交的数据丢失怎么办_后端开发,第1张

ZendStudio打开utf-8格式的php文件乱码怎么办?_后端开发

解决ZendStudio打开utf-8格式的php文件乱码的方法:首先打开zendstudio,依次点击【编辑-设置编码】;然后选择【其他-UTF-8】,并选择菜单栏导航的【窗口-首选项】;最后点击【常规-工作空间-其他-utf-8】即可。


php数据丢失的解决办法:首先查看表单提交请求完整性;然后查看请求数据是否超过php或nginx限制;接着直接通过“file_get_contents('php://input')”获取原始请求数据;最后修改max_input_var数量。


php表单提交的数据丢失怎么办_后端开发,第2张

PHP 表单提交的数据丢失问题

今天在处理用户 excel 导入时,遇到个小问题

需求是这样的:用户导入 excel 后,用 PHPExcel 读取导入数据,渲染一个表单,用户通过查看表单,确认导入的数据完整性,最后在确认入库。


php表单提交的数据丢失怎么办_后端开发,第3张

但由于用户 excel 导入的数据比较多,表单渲染后有超过 6000 个 input, 并且提交时(POST)是直接采用的表单提交,导致后台只能读取前面一小部分数据。


跟踪

1.查看表单提交请求完整性

通过跟踪提交时的 http 请求,发现所有数据都正常提交。


2.查看请求数据是否超过 php 或 nginx 限制

通过查看 Request Headers 下的 Content-Length 发现只有仅为 218558 B 也就是 20KB 左右。


这肯定没达到限定值。


3.直接通过 file_get_contents('php://input') 获取原始请求数据

PHP编写socket错误信息乱码怎么办?_后端开发

PHP编写socket错误信息乱码的解决办法:首先对错误信息编码进行检查,代码为【mb_detect_encoding(socket_last_error($socket)】;然后将错误信息转为【UTF-8】编码;最后转换输出结果正常即可。


由于直接用 $_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 还有这个限制,导致在这儿翻车了

更多相关知识,请访问ki4网!

以上就是php表单提交的数据丢失怎么办的详细内容,更多请关注ki4网其它相关文章!

php中session和cookie区别是什么?_后端开发

php中session和cookie区别是:1、cookie是通过扩展http协议实现的,而session是一种类似散列表的形式保存信息;2、cookie是保存在【客户端】的,而session是保存在【服务端】的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/562176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020-07-11
下一篇 2020-07-11

发表评论

登录后才能评论

评论列表(0条)

保存