2014-03-06 66 views
0

我正在創建一個網站,並且在我訪問www.mydomain.org時出現此錯誤。 此代碼作品http://mydomain.org/index.php?id=homephp注意:未定義的索引:第3行中的C: xampp htdocs includes middle.php中的id

時,如何解決這個,因爲我不希望人們有在/index.php?id=home

<div id="middle_main"> 
    <?php 
      $page = $_GET['id']; 
      if ($page == "") { include "pages/home.html"; } 
      else { include "pages/$page.html"; } 

    ?> 
</div> 
+2

這將幫助你http://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php/12770836#12770836 – asprin

回答

0

檢查輸入如果它被設置,如果沒有,將其設置爲「家」:

$page = isset($_GET['id']) ? $_GET['id'] : 'home'; 

那麼你並不需要一個if語句來檢查設置:

include "pages/$page.html"; 
+0

非常感謝。我實際上仍然需要if語句。如果它被刪除,它會引發語法錯誤,但是它可以在你想添加的行中起作用。 – user3389088

+0

您不應再需要if語句來檢查變量是否有值。您需要檢查該值是否是您網站的「有效部分」。 – George

0

聲明在PHP發展確實最近,他們錯誤,這意味着你不必修復他們。然而,這是一個非常好的做法。

undefined index通知會提醒您,您正嘗試讀取尚未初始化的數組索引。在你的情況下,你嘗試讀取$_GET陣列的home索引。當您的URL爲something.php?home=something時,$_GET['home']會自動初始化,並且不會顯示通知。但是,當您訪問something.php時,此索引未設置,這說明了通知!

在你的代碼中,你需要檢查這個索引是否被設置,並且當它不是時,爲它分配一個默認值。

$page = isset($_GET['home']) ? $_GET['home'] : 'home'; 

在這種情況下,如果home指數沒有設置,$page將被設置爲「家」。如果您想了解更多關於我剛纔使用的三元運算符(?和:)的信息,請參閱http://davidwalsh.name/php-shorthand-if-else-ternary-operators

+0

從什麼時候通知PHP最新發展? – naththedeveloper

+0

我想那個經驗說起來,我記得早在通知被實現之前使用PHP,而我不是那*舊的。現在用PHP 6 alpha,可能已經有一段時間了......無論如何,那不是老的:p –

相關問題