2013-08-27 43 views
0

這可能是一個愚蠢的問題,但我迷失在這裏。我需要使用POST變量將其中的一些數據發送到另一個PHP文件。這是我的表格:PHP發送數組到另一個PHP文件

<form action="test.php" method="post"> 
     <label name="html[]" hidden><?php echo $array; ?></label> 
     <input type="submit" value="submit"> 
</form> 

這是test.php的

<?php 
    $html = $_POST['html']; 
    for($i = 1; $i<=9; $i++){ 
     echo $html[$i]; 
    } 
?> 

所以這是我嘗試過,但它不顯示任何內容。請幫助

+0

標籤不是字段,所以是它不會工作,閱讀HTML表單輸入字段或簡單地使用最常見的方式來傳遞PHP頁面,SESSIONS之間的變量。 – Prix

+0

您需要使用''。標籤不是表單域。他們是表單字段的LABELS。 –

+0

你真的需要閱讀很多東西。首先,從HTML的角度來看,您需要了解表單以及標籤和輸入之間的差異。從PHP的角度來看,你不能僅僅將一個數組回傳到HTML中,並且在發佈後神奇地將它重新組合成一個數組。 –

回答

3

您需要創建多個輸入元素的名稱相同,其中的每一個都會有一個陣列項目作爲其值:

<?php foreach ($array as $item) : ?> 
<input type="hidden" name="html[]" value="<?= htmlspecialchars($item); ?>" /> 
<?php endforeach; ?> 

要點要牢記:

  1. $item必須始終爲標量值(字符串,整數等)。你不能用這種技術零碎地傳遞數組。
  2. 永遠不要忘記,因爲您正在向HTML輸出注入變量,您必須必須正確地轉義和/或消毒它們。在這種情況下,這是通過htmlspecialchars完成的,它必須知道您的輸出編碼能夠正常工作(查找其第三個參數)。

還存在可用於通過串行化零碎傳遞數組的替代方法:

<input type="hidden" name="html" 
     value="<?= htmlspecialchars(serialize($array)); ?>" /> 

然後你將反序列化它在接收端:

$html = unserialize($_POST['html']); 

I' m主要包含此選項以實現完整性,因爲在實踐中會話變量是在請求之間傳遞複雜狀態的更好方法。

+0

非常感謝。我使用會話,一切正常。對不起,愚蠢的問題,但現在已經很晚了,我必須在明天之前完成我的項目。再次感謝您的回答和提及會議 – Alen

1

是否需要將數組的數據放在隱藏字段中?您可以將數組存儲在$ _SESSION中並訪問它。順便說一句,我認爲你有問題,標籤可以提交,在這種情況下,你必須把數據放入輸入字段,類型=「隱藏」。

相關問題