POST数据在浏览器和PHP之间截断

 有志者来袭 发布于 2022-12-18 08:21

我遇到了一个问题,即使用AJAX通过POST发送的大型数据集并没有使它成为$_POSTPHP中的变量.

用户通过webform上传Excel/CSV文件,并通过AJAX进行解析.该特定示例具有775个记录,每个记录具有13个字段/元素.添加正在提交的其他字段,数据集中的元素少于11,000个.根据我在这个问题上所做的研究,32位浏览器(即Firefox,Chrome等)应该能够处理42.9亿个元素,所以我不认为数据大小是一个问题,特别是作为响应从文件上传包含所有元素.

只有在提交整个表单进行验证并输入数据库时​​,问题才会出现.问题是Firebug和Chrome开发者工具上的控制台显示整个数据集已提交: Firebug输出

做一个var_dump$_POST给出了这样的: 在此输入图像描述

php.ini已'post_max_size'设置为200M.甚至'upload_max_filesize'设定为100M.我个人测试的Firefox 32.0.3和Chrome 37.0.2062.103 m以及UAT测试的其他旧版本(包括IE 10)都会出现此问题.

AJAX调用是:

new wrapper.ajax('/t1.php', {
    type: 'POST',
    data: data,
    form: $('form[name=oppForm]'),
    success: function (response)
    {
    if (response.result)
    {
        window.location = response.result;
    }
    },
    complete: function ()
    {
    $("#submit").loading('done');
    }
});

PHP是:



有什么想法吗?

编辑

在与其他开发人员交谈之后,我还检查了输出php://input并发现它DID包含浏览器发送的整个POST数据,但数据没有正确转换为$ _POST.但是,如果我从帖子数据中删除10个键,并提交765而不是775,它确实可以正常工作.

1 个回答
  • 问题最终是'max_input_vars'php.ini文件中没有设置得足够高.该值设置为10,000,用户提交的数据接近11k,因此其中一些被截断.将此值更改为更大是解决问题的方法.

    2022-12-18 08:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有