2011-12-10 141 views
-1

我正在使用PHP開發一個Web應用程序。 發生了一些我以前從未見過的錯誤。 $_GET正常運行,但$_POST無法正常工作。試想一下,下面的表格:

<form action="process.php" method="post"> 
    <input type="text" name="title" /> 
    <input type="submit" value="send" /> 
</form> 

正如你看到的,我用後申請表格的方法屬性。在這種情況下,下面的代碼將返回錯誤:

<?php 
$sentData = $_POST['title']; 
echo($sentData);  
?> 

錯誤消息:

PHP Notice: Undefined index: title in ... 

但如果我在HTML表單代碼使用PHP腳本$_GETget,就不會有什麼問題,沒有任何錯誤。

還有更奇怪的東西。

  1. 只有一種形式在我使用POST時不返回錯誤,其他形式返回錯誤。
  2. 當我在本地運行此應用程序(使用Xampp -Apache 2.2)時,一切正常,沒有任何錯誤,但是每當我運行遠程服務器(IIS 7)的應用程序時,我都會遇到這些錯誤和問題。
+1

這不是一個錯誤,它是一個通知。你可以禁用這些。 – Dynamikus

+0

@Dynamicus如果通知是您所需的變量不存在,禁用通知不是真的。 – jeroen

+0

@Dynamicus:E_NOTICE可以被壓制,但不管你是否應該是另一回事。 OP期待這個值被填充,所以隱藏'錯誤'根本就沒有任何幫助。 ...你是否嘗試過'print_r($ _ POST)'來查看是否有任何東西被返回? – MrWhite

回答

0

最後,我更改了我的文件所在的服務器。我在另一臺服務器(相同的操作系統)上試過,並且一切正常。 我不明白是什麼原因......這是我第一次得到這個未知的錯誤。 但是,謝謝大家的建議和意見。

+0

那麼,我沒有那種奢侈品,而我也有同樣的問題。儘管只有在我嘗試通過互聯網訪問它時纔會發生。如果我試圖通過局域網解決它,一切正常。 – Ariaan

1

,所以我會在幾個不同的方式接近這一點:

  1. @Dynamicus是正確的,這只是一個「通知」,而不是一個致命錯誤(至少你沒有這麼說在這個問題中),所以這可能是你的.ini配置或配置定義中的差異來抑制像'error_reporting(0);'這樣的錯誤''
  2. 您可能希望在當地服務器和服務器上備份當前正在運行的.ini文件,並將工作文件複製到服務器並重新啓動Apache,然後查看是否有所作爲。
  3. 爲什麼索引數組(即$ _POST)產生一個警告有點奇怪,但做一個「print_r($ _ POST);」或「var_dump($ _ POST);」查看內容或是否有任何內容。

如果你使用的是框架或者路由的東西,這可能是需要研究的東西。

我希望這有助於和有錯誤報告[這裏] http://php.net/manual/en/function.error-reporting.php

0

你輸入元素都需要一個名稱和值屬性的詳細設置。