【发布时间】:2014-12-03 04:33:03
【问题描述】:
我在使用 POST 在 PHP 中的页面之间传输值时遇到问题。我在页面底部使用隐藏字段来说明页面上有多少项目(学生行)。我还有一个过滤器选项,可以减少页面上可见的项目数量。当我从过滤页面提交数据时,所有值(包括隐藏的值)都可以通过,不用担心。当我在未过滤页面的情况下提交数据时,隐藏的值不会通过(因此我的数据收集不会发生)。
关键是,这不会发生在我基于 Apache 的测试环境中,它只会在我将它移动到基于 IIS 的生产环境时发生。
这是初始页面的屏幕截图(出于隐私原因,实际数据已被删除),其中显示了输入。有 12 行,每行 30 个输入(总共 360 个):
这是我需要的带有隐藏字段的 HTML 代码:
<input type="hidden" value="12" name="numStudents">
<input type="hidden" value="10" name="numTasks">
<input type="hidden" value="3" name="numCriteria">
<input class="btn btn-primary btn-large" type="submit" value="Save" name="submit">
这是接收值的 PHP 代码:
//Get the general information from the form
$numStudents = $common->clean($_POST["numStudents"], $CON);
$numTasks = $common->clean($_POST["numTasks"], $CON);
$numCriteria = $common->clean($_POST["numCriteria"], $CON);
//Loop to get grades for all students
$output = "";
$flagChange = FALSE;
$count = 0;
for($i = 0; $i < $numStudents; $i++)
当我直接回显 $numStudents 或 $_POST["numStudents"] 的值时,什么都不会出现。
真正令人困惑的是 - 当我有 1 或 2 个学生的列表时,未过滤的数据会毫无问题地通过(回显显示正确的值)。如前所述,如果我过滤数据以便每个学生只显示 6 列输入,则数据可以毫无问题地通过。
IIS 是否有 POST 变量中允许的最大值数量?如果是这样,这可以改变吗?我检查了我的 PHP.ini 文件,帖子的最大大小设置为 8M(这个数据甚至不应该接近)。
我需要更改其他设置吗?
【问题讨论】: