2011-06-14 81 views
5

有人可以向我解釋這個嗎?

我有以下代碼:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<input type="text" id="testField" /> 
<input type="submit"> 
</form> 
<br /><br /> 
<pre> 
<?php print_r($_POST); ?> 
</pre> 

能正常工作在我的主要dev的框,並在服務器上。但是,我現在不得不在我的筆記本電腦上遠程工作。我已經安裝了與我的開發設置完全相同的WAMPServer 2.1a版本,並且$ _POST數組爲空。

如果我宣佈領域,如:

<input type="text" name="testField" /> 

我得到預期的輸出。

+2

關閉,但您應該意識到這會產生XSS漏洞:'<?php echo $ _SERVER ['PHP_SELF']; ?>'。而是使用'<?php echo htmlentities($ _ SERVER ['PHP_SELF']); ?>'。 – Chris 2011-06-14 23:12:52

回答

8

從HTML 4.01規範,§17.2,"Controls"

控制的 「控件名」 由它的name屬性給出。

...

當一個表單提交處理,一些控制有他們的名字與他們的當前值配對,這些對與表單提交。

「id」無關緊要。

7

標準行爲。在表格中始終使用name

+0

確實。我對開發盒上的行爲感到驚訝。 「它工作正常」似乎完全違背常識,並且與HTML表單的常見行爲完全相反。 – 2011-06-14 23:08:40

+2

這種情況。這可能是你的主開發盒上的瀏覽器自動使用'id'作爲缺少的'name'屬性。 – Chris 2011-06-14 23:11:30

0

你永遠不可以使用id傳遞一個值到另一個頁面,這是php可以通過方法讀取的唯一屬性POST是使用對象的名稱。

相關問題