数组通过 ajax post 被截断。 Ajax 发帖限制?

2023-11-24

我有一个多维数组,它由 426 个较小的数组组成,还包含 4 个属性。下面是 426 个数组之一的示例...

    array( //Main array
          0 => array( //1 of 426 arrays
               'name' => 'Danny', 
               'email' => '[email protected]', 
               'picture_url' => 'http://www.website.com', 
                'score' => 89
          ),
    )

我将这个带有 jquery 的 ajax 函数的数组发布到 php 文件,这会将它们添加到数据库中...我的问题是,当将数组发布到 php 文件时,该数组似乎被砍掉了。只有大约一半的数组实际上到达了 php 文件......

这让我相信通过 ajax 发布时可能存在文件大小限制。但是,我的数组的大小似乎相对较小..

我正在 WAMP 上运行我的应用程序..

任何人都可以阐明可能发生的事情吗?

UPDATE:

我像这样发布我的数组:

$.ajax({
  type: "POST",
  url: "invite_friends.php",
  data: {
    theID: me.id,
    friends: multidimensional_array //This is the array <---
  },
  success: function(data, textStatus, jqXHR) {
    return console.log(data);
  },
  error: function(jqXHR, textStatus, errorThrown) {
    return alert("Error: Oops, there has been a problem");
  }
});

我像这样检索我的数组(在invite_friends.php中)。

if($_POST['friends']) {
    $friends = $_POST['friends'];   
} else {
    $friends = FALSE;
} 

您需要打开您的php.ini文件并设置(或创建)这一行:

max_input_vars = 1000000

max_input_vars默认值为 1000,这将在数组元素总数为 1000 时截断。只需将其更改为一个非常高的数字(在我的例子中,我需要将其设置为一百万)。

来自 PHP 手册:

可以接受多少个输入变量(限制适用于 $_GET, $_POST 和 $_COOKIE 分别是超全局的)。该指令的使用 降低使用哈希的拒绝服务攻击的可能性 碰撞。如果输入变量多于此指定的数量 指令,发出 E_WARNING,并进一步输入变量 从请求中截断。此限制仅适用于每个嵌套 多维输入数组的级别。

记住:正如手册所述,设置此默认限制是为了防止拒绝服务攻击。

希望这会有所帮助,尽管这是一个老问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数组通过 ajax post 被截断。 Ajax 发帖限制? 的相关文章

随机推荐