【问题标题】:PHP: whats the total length of a post global variable?PHP:post 全局变量的总长度是多少?
【发布时间】:2011-01-17 14:51:19
【问题描述】:

我想知道是否有人知道全局帖子的总长度。例如:

$_POST['formInput'] = "hello world, how long can i be?";

我正在创建一个网站,有人将在其中输入未知数量的字符到 textarea 中,因此它可能是 word 文档上的 2 页。因此,如果有人知道除了使用全局后我可以如何做到这一点的任何其他方法吗? (它不能保存在文件中,因为它的重要数据我不希望其他人找到)这将非常有帮助。

谢谢

【问题讨论】:

标签: php post global-variables string-length


【解决方案1】:

另一个问题可能是 php.ini 中指令 max_input_vars 的默认限制(默认为 1000),而不仅仅是 post_max_size。如果你有例如一个包含数千个复选框的非常大的表单,$_POST 数组将只有 1000 个键。

【讨论】:

  • 这实际上解决了我的问题,请求远小于post_max_size,但它达到了max_input_vars 限制。谢谢!
  • 你拯救了我的一天。我只发布了大约 80kb 的数据,但有超过 1000 个字段(大表格)。 PHP 方面似乎缺少任意字段,直到我检查了浏览器最初发布的内容与 $_POST[] 实际包含的内容,并意识到“仅”解析了 1000 个字段。
【解决方案2】:

检查您的 php.ini 以获取 post_max_size。默认情况下,这通常约为 8mb,但如果您使用共享主机,它肯定会有所不同。

; PHP 将接受的 POST 数据的最大大小。 post_max_size = 8M

如果您希望向服务器发送大量数据,则必须使用$_POST。为了进一步研究,我建议查看文档中的POST Method Uploads

【讨论】:

  • Apache 也有 LimitRequestBody 和 LimitRequestFieldSize 指令,假设它仅受 PHP 限制并不总是安全的。
【解决方案3】:

如果您想从浏览器向服务器发送大量数据,则必须使用 HTTP POST 方法——这意味着数据将在 PHP 端接收到 $_POST 超全局数组;对此你无能为力。

配置指令post_max_size 定义了使用 POST 方法可以接收的最大数据量——您可能需要将其设置为高于默认值,具体取决于您的需要。

而且,正如post_max_size 的文档中所说,为memory_limit 设置的值也有其重要性。

【讨论】:

    【解决方案4】:

    $_POST 是从 HTTP 请求的正文中填充的。由于对 HTTP 请求的大小没有限制,因此协议层没有限制。然而 PHP 对它将读取多少输入有一些限制。您可以使用 ini 设置 post_max_size

    来控制它

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 2014-02-16
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多