2010-09-26 26 views
1

我工作的一個網站,我一直得到一個PHP交換機ID錯誤

注意:未定義指數:ID文件的根在第3行

我知道它的簡單的東西,但不能找出問題出在哪裏。

這裏是代碼:

<?php 
    switch($_GET['id']) { 
     default: 
      include('pages/hello.php'); 
     break; 
     case "testimonials": 
      include('pages/testimonials.php'); 
     break; 
     case "faq": 
      include('pages/faq.php'); 
     break; 
     case "raq": 
      include('pages/raq.php'); 
     break; 
     case "contact": 
      include('pages/contact.php'); 
     break; 
    } 
?> 

3號線將<?php switch($_GET['id']) {

任何幫助,將不勝感激!

+0

如果您願意,將答覆標記爲答案並進行投票將是明智之舉。 – 2010-09-26 14:02:09

回答

0

似乎url參數'id'沒有被定義,這是通知的原因。

你應該首先檢查它的存在,例如。

if (isset($_GET['id'])) { 
    your code here 
} 
1

確保id設置,默認應該走到底:

if (!isset($_GET['id'])) { 
    include('pages/hello.php'); 
} 
else{ 
    switch($_GET['id']) { 
    case "testimonials": include('pages/testimonials.php'); break; 
    case "faq": include('pages/faq.php'); break; 
    case "raq": include('pages/raq.php'); break; 
    case "contact": include('pages/contact.php'); break; 
    default: include('pages/hello.php'); break; 
    } 
} 

爲了安全起見,請務必sanitalize侑$_GET['id']。我建議你設置一個允許頁面的數組,幷包含那些在數組中的頁面。你可以使用in_array函數。

3

這是因爲在您的網址id=x並不總是設置,所以當你試圖切換它的價值它不存在。你應該做的是像這樣:

<?php 

    $id = isset($_GET['id']) ? $_GET['id'] : ''; //This is just a short if-else 
    switch($id) 
    { 
     default: 
      include('pages/hello.php'); 
     break; 
     case "testimonials": 
      include('pages/testimonials.php'); 
     break; 
     case "faq": 
      include('pages/faq.php'); 
     break; 
     case "raq": 
      include('pages/raq.php'); 
     break; 
     case "contact": 
      include('pages/contact.php'); 
     break; 
    } 
?> 

Basciall $id = isset($_GET['id']) ? $_GET['id'] : '';這是什麼說的是,如果ID是內部URL,然後使用,否則使用空字符串,爲空字符串的原因是它會觸發default: switch語句內

這種方式$ id將始終設置爲某些內容。

+0

這工作完美。謝啦! – Chaddoesdesign 2010-09-26 12:34:56

+0

如果這是對您最有幫助的答案,並且您感覺儘管對於您的問題最正確的答案,請使用此帖子右側的勾號將其標記爲您選擇的答案,並表示您的歡迎。 – RobertPitt 2010-09-26 18:48:33