2010-07-13 21 views
5

我認爲在我的代碼中存在錯誤,或者我的PHP或Apache設置不正確。當隱藏輸入類型存在時,不會返回POST數據

當我提交表單,在它的隱藏字段,我沒有得到任何數據在我的$ _POST陣列...

當我在我的代碼註釋掉的隱藏字段,則返回POST數據正確...

HTML表單

<form action='/utils/login.php ' method='POST'> 
<table> 
    <tr> 
     <td colspan='2'> 
      Login 
     </td> 
    </tr> 
    <tr> 
     <td> 
      Username 
     </td> 
     <td> 
      <input type='text' name='userid' value='' size='12' /> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      Password 
     </td> 
     <td> 
      <input type='password' name='password' size='12' /> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type='hidden' name='formtype' value='login' /> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type='submit' value='Submit' /> 
     </td> 
    </tr> 
</table></form> 

這裏是處理在PHP代碼...

foreach ($_POST as $var => $value) { 
    echo "$var = $value<br>"; 
} 

我在我的服務器上使用PHP 5和Apache 2.2。

任何想法?

編輯...

我已經把範圍縮小到這...

$command = $_POST['formtype']; 

當我刪除從我的$ _ POST @符號,我收到以下錯誤...

說明:未定義變量:formtype在C:\根目錄\ utils的\ login.php中在第17行

如果我註釋掉線,POST數據被傳遞到程序沒有問題。

+6

難道你閉上你的''

<input hidden name='foo[{{ loop.index }}][id]' value='{{id}}' /> 

我通過使類型= '隱藏' 把它賣了?我沒有看到結束標記。 – BoltClock 2010-07-13 04:36:19

+2

您不需要另外的表格單元格用於隱藏的表面... – thomasfedb 2010-07-13 05:01:00

+0

是的。我的頁面裏面有關閉的標籤。我忘了將它粘貼到SO帖子中。這不是表單的問題。 – 2010-07-13 12:23:49

回答

2

我建議改變您使用以顯示的$_POST內容,以一個單一的呼叫的代碼:

print_r($_POST); 

每當你正在顯示的陣列的全部內容,這是比一個循環瓦特更好/回聲,因爲它會顯示數組中每個級別的每個值。

此外,正如評論中提到的,確保您關閉HTML中的表單。

+0

謝謝。我不認爲這就是頁面沒有返回任何文章數據的原因。請記住,當我完全註釋掉元素時,POST返回數據按預期返回。 – 2010-07-13 12:25:34

+0

爲什麼這個答案得到3張選票?! – mok 2015-10-31 18:31:24

2

您從未關閉您的<form>標記。

而且我現在看到有人在評論中毆打我一英里。不過,這是正確的答案。

+0

我可以看到表單標籤已關閉。它有什麼錯誤嗎?我遇到同樣的問題,所以請閱讀你的答案。 – Jnanaranjan 2014-08-19 14:02:09

2

您是否嘗試將隱藏的輸入從表格中放置並放置在打開表單標記之後?

您還可以使用:

var_dump($_POST); 

...查看POST變量。

此外,如果正在動態創建的任何輸入或可能會從POST變量丟失......你可以使用:

variable = 'default'; 
if(isset($_Post['variable'])) $variable = $_POST['variable']; 

...動態設置變量,可能是有或沒有。

+0

將隱藏的輸入直接放置在表單標記後修復了我遇到的類似問題..謝謝! – 2013-04-24 17:24:32

0

請嘗試:

<form action="..." method="post" enctype="application/x-www-form-urlencoded"> 
1

我改變了我的形式枝杈工作。更改後的表單不會發送隱藏的輸入值。 如果有人遇到同樣的問題,我通過以下操作解決了問題。

原來的路線是:

<input type='hidden' name='foo[{{ loop.index }}][id]' value='{{id}}' />