2011-12-31 70 views
-1

喜IM包括基於在$ _GET得到一個erorr錯誤,如果使用腳本語句

<?php 
$config = array(
'videos' => 'dynapage/scripts/videos.php', 
'testbed' => 'dynapage/scripts/testbed.php' 
); 

if(isset($config[$_GET['page']])) { 
    include($config[$_GET['page']]); 
} 
else { 
include("home.php"); 
} 
?> 

即時得到以下錯誤

Notice: Undefined index: page in D:\webdesign\webserver\root\dynapage\scripts\pagecheck.php on line 7 

任何幫助非常apreciated腳本,但IM與

+1

首先檢查'$ _GET [「頁」]'設置的話,那麼你可以繼續。 – lfxgroove 2011-12-31 16:29:17

+4

只要包括你從某處得到的東西,是極其危險的! – KingCrunch 2011-12-31 16:31:40

+0

順便說一句:這不是一個錯誤,這是一個通知。聽起來像挑剔,但有一個區別:這只是一個通知,它沒有設置,但作爲PHP的寬容,它會繼續(值爲「假」)。當然,你不需要這些通知,因爲它們可能是不好的跡象,但要注意不同的錯誤級別。 – Nanne 2011-12-31 16:32:56

回答

6

試試這個:

if(isset($_GET['page']) && isset($config[$_GET['page']])) { 
    include($config[$_GET['page']]); 
} 

if條件下,條件從頭到尾依次檢查,在上述情況下,先前請求的是$_GET['page']]哪些檢查是否可用,如果沒有設置,則將isset($_GET['page']])作爲此作業,其他條件將不會被檢查。

+0

非常感謝我使用的代碼的問題是什麼 – rees92 2011-12-31 16:29:20

+0

操作數的順序在這裏很重要,可能是很好的指出。 – lfxgroove 2011-12-31 16:29:45

+0

@ rees92原因在於,當你對$ config [$())進行檢查時,$ _GET ['page']'(也就是url不包含:?page = 10) _GET ['page']]'所以PHP告訴你這個,這樣你就不會拋棄它。 – lfxgroove 2011-12-31 16:34:19

1

你可以將其更改爲:如果

if(isset($_GET['page']) && isset($config[$_GET['page']])) { 
    include($config[$_GET['page']]); 
}