2014-12-03 35 views
0

我在使用POST在PHP頁面間傳遞值的問題。我在頁面底部使用隱藏字段來說明頁面上有多少項(學生行)。我也有一個過濾器選項,可以減少頁面上顯示的項目數量。當我從過濾的頁面提交數據時,所有的值(包括隱藏的值)都不用擔心。當我提交未過濾頁面的數據時,隱藏的值無法通過(因此我的數據收集不會發生)。問題transfering PHP頁面之間的數據與POST

的硬道理是,這並不在我的基於Apache的測試環境中發生的,當我移動這基於IIS的生產環境時纔會發生。

這裏是初始頁面的屏幕截圖(隱私原因實際數據已被除去),其示出了輸入。有30個輸入中的每個(360個)的12行: 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」]的值時,不會顯示任何內容。

真正令人困惑的事情是 - 當我有1名或2個學生名單,未過濾的數據來自通過沒有問題(回波顯示正確的值)。如前所述,如果我過濾數據以便每個學生只顯示6列輸入,則數據即可順利通過。

確實有IIS中允許POST變量值的最大值是多少?如果是這樣,這可以改變嗎?我檢查了我的PHP.ini文件,帖子的最大大小設置爲8M(這個數據甚至不應該接近)。

難道還有其他設置的地方我需要改變嗎?

回答

0

所以,我才得以重製幀我搜索查詢來找到解決方案。事實證明,在PHP數組中允許POST數組允許的最大元素數量。我的極限是1000的默認,我現在已經調升這3000

設置php.ini文件是:max_input_vars

我發現這個頁面幫助解決這個問題:

$_POST max array size

1

可以發送POST數據的最大大小是每個服務器設置。

#set max post size 
php_value post_max_size 20M 

在IIS你想改變maxAllowedContentLength

見:對於PHP/APACHE可以從作爲的.htaccess中設置http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

+0

我的maxAllowedContentLength被設置爲30,000,000字節,應該是綽綽有餘。我曾嘗試將其更改爲6000萬以防萬一,但這並未解決我的問題。你的回答確實幫了我很大的忙,因爲它讓我能夠更有效地搜索查詢。謝謝。 – Tristan 2014-12-04 00:57:27