【问题标题】:Why is max_input_vars ignored in PHP 5.2?为什么在 PHP 5.2 中忽略了 max_input_vars?
【发布时间】:2014-07-15 06:44:22
【问题描述】:

我在尝试提交大量字段时遇到了一点问题。 所以我写了一个脚本来测试php.ini中max_input_vars选项的行为。

这让我很困惑。

这是我的代码:

<!doctype html>
<html>
<body>

<?php

$t = array();
if(isset($_POST['t'])) { $t = $_POST['t']; }

echo "POST-VARS COUNT: ". count($_POST)." <br />";
echo "POST-VARS[t] COUNT: ". count($t)." <br />";

echo "ini_get('max_input_vars'): ". ini_get("max_input_vars"). "<br />";
echo "ISSET(\$_POST['submit']): ". (isset($_POST['submit']) ? "TRUE" : "FALSE"). "<br />";
echo "<br />";

echo "<form method='post' action='{$_SERVER['PHP_SELF']}'>\n";

for($j = 0; $j < 2000; $j++) {
    for($i = 0; $i < 10; $i++) {
        echo "<input type='hidden' name='t[$j][$i]' value='$i' />\n";
    }
}
echo "<input type='submit' name='submit' value='test'>\n";

echo "</form>\n";

?>

</body>
</html>

我用 PHP 5.2 和 PHP 5.4 对其进行了测试,发现有一些奇怪的差异。 似乎是在使用 PHP 5.2 时提交了所有 20000 个字段,尽管 php.ini 配置只允许 5000 个。

PHP 5.2.17 版中的输出:

POST-VARS COUNT: 2
POST-VARS[t] COUNT: 2000
ini_get('max_input_vars'): 5000
ISSET($_POST['submit']): TRUE

PHP 5.4.30 版中的输出:

POST-VARS COUNT: 1
POST-VARS[t] COUNT: 500
ini_get('max_input_vars'): 5000
ISSET($_POST['submit']): FALSE

问题是:

有谁知道为什么 php 会这样?是 PHP 5.2 的 bug 吗?

【问题讨论】:

  • 忘掉 5.2 吧。真的 - 这是一个古老的版本,何必担心?
  • @Alma Do 它只是在我的主机上运行,​​因为直到现在我还没有重构我的漏洞代码。我正在努力。我会尽快使用 PHP 5.4。
  • php.net/manual/en/info.configuration.php 它回答你的问题了吗?
  • @RoyalBg hmmmmm... 自 PHP 5.3.9 起可用。因此,如果我执行ini_get,它不应该显示 5000。对不起,如果是这个原因,这真是一个愚蠢的问题。请至少发布一个答案让我接受。
  • @steven 我猜,你可以在 php.ini 中设置一个虚拟指令,最近你可以用ini_get() 提取它。 ini_get() 用于尝试查看指令是如何设置/更改的,而不是它是否与版本/构建兼容

标签: php http-post-vars


【解决方案1】:

max_input_vars 指令从 PHP 5.3.9 开始可用,可以在文档 (http://php.net/manual/en/info.configuration.php#ini.max-input-vars) 中看到。那么它不应该在 PHP 5.2 中工作,即使你将它放入配置并尝试 ini_get() (我猜 ini_get 也适用于任何不存在的指令?)。

【讨论】:

    猜你喜欢
    • 2022-12-23
    • 2020-06-18
    • 2012-10-27
    • 2013-09-30
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多