2011-08-16 57 views
0

我試着做一些關於表單動作和輸入的練習,並複製粘貼一段代碼,但是我得到了未定義的索引:fname和Undefined index:age。代碼取自非常流行的PHP教程網站,應該不會有任何問題,但無論如何提交它們。是這個服務器錯誤或類似的東西?未定義的索引。服務器錯誤或編碼問題?

  <form action="posting.php" method="post"> 
      Name: <input type="text" name="fname" /> 
      Age: <input type="text" name="age" /> 
      <input type="submit" /> 
      </form> 
      <?php 

      echo $_POST["fname"]; 
      echo $_POST["age"]; 

      ?> 
+1

僅僅因爲一個網站很受歡迎並不意味着它的教程是最佳實踐或最新的。你可以找到10年前編寫的教程,甚至不會在現代版本的PHP上運行。 –

+0

雖然錯誤報告已啓用,但好像缺少大多數新開發者設置 – Phil

回答

2

您需要確保$_POST在嘗試讀取信息之前正在獲取信息。有很多種方法可以做到這一點。這裏有一個:

<form action="posting.php" method="post"> 
    Name: <input type="text" name="fname" /> 
    Age: <input type="text" name="age" /> 
    <input type="submit" /> 
</form> 

<?php 
    if(isset($_POST)) { 
     echo $_POST["fname"]; 
     echo $_POST["age"]; 
    } 
?> 
+0

我看見在PHP代碼之後使用了一些輸入html標籤的編碼。這就是代碼的原因,我的意思是防止讀空輸入? – user893970

+1

表單和PHP代碼的順序與表單的邏輯無關,只會影響表單和代碼輸出在屏幕上顯示的順序。 – mopsled

+0

最後一個問題:)如果瀏覽器知道輸入爲空,爲什麼代碼跳轉到PHP?我的意思是根據我的經驗(Java),如果不按順序執行它們,代碼就不能跳到其他行。爲什麼我們需要額外的檢查(如果陳述)? – user893970

2

此之前提交表單時,$_POST是空的,並試圖讀什麼出它會導致這樣的通知。

<?php 

if (isset($_POST['fname']) && isset($_POST['age'])) { 
    echo $_POST['fname']; 
    echo $_POST['age']; 
} 
+0

爲您提供了另一個提示Dan :)'isset($ _ POST ['fname'],$ _POST ['age'])' – Phil