使用POST在PHP页面之间传输数据的问题

时间:2014-12-03 04:33:03

标签: php html iis post

我在使用POST在PHP页面之间传输值时遇到问题。我在页面底部使用隐藏字段来说明我在页面上有多少项(学生行)。我还有一个过滤选项,可以减少页面上可见的项目数量。当我从过滤页面提交数据时,所有值(包括隐藏的值)都不用担心。当我使用未过滤的页面提交数据时,隐藏的值无法通过(因此我的数据收集不会发生)。

关键是,这不会发生在我的基于Apache的测试环境中,只有当我将其移动到基于IIS的生产环境时才会发生。

以下是初始页面的屏幕截图(出于隐私原因已删除实际数据),其中显示了输入。共有12行,每行30个输入(总共360个): Data input page

以下是我需要隐藏字段的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”]的值时,不会出现任何内容。

真正令人困惑的是 - 当我有一个或两个学生的列表时,未经过滤的数据没有问题(echo显示正确的值)。如前所述,如果我过滤数据,以便每个学生只显示6列输入,那么数据就会毫无问题地出现。

IIS是否具有POST变量中允许的最大值?如果是这样,可以改变吗?我检查了我的PHP.ini文件,post的最大大小设置为8M(这个数据甚至不应该接近)。

我需要改变另一个设置吗?

2 个答案:

答案 0 :(得分:1)

可以发送的POST数据的最大大小是每服务器设置。对于PHP / APACHE,可以从.htaccess设置为:

#set max post size
php_value post_max_size 20M

在IIS下,您想要更改maxAllowedContentLength

请参阅:http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

答案 1 :(得分:0)

因此,我能够重新构建搜索查询以找到解决方案。事实证明,PHP中有一个设置,用于POST数组中允许的最大元素数。我的限制被设置为默认值1000,我现在将其提高到3000。

PHP.ini文件中的设置为:max_input_vars

我发现此页面有助于解决此问题:

$_POST max array size