2011-10-24 61 views
3

我試圖編寫一個文件列表並將它們放入數組中。 必須更改調用外部內容的頁面上的內容。數組名=獲取正確的文件

我發現了這段小小的代碼,並試圖使它工作。 LINK(最後的評論)

$all_pages=array("main","page_two","page_three");  
$page = $_GET['page'];  
if(isset($page) and array_key_exists("$page", $all_pages)) // added a missing ')' 
{ 
include('subfolder/folder/'.$_GET['$page'].'.html'); 
} 

好,這是行不通的。 只是不能到達正確的文件。 (內容顯示始終爲空)。

我(嘗試)調用文件,如:

<ul>  
    <li><a href="template.php?main">Main content</a></li> 
    <li><a href="template.php?page_two">Second content</a></li> 
    <li><a href="template.php?page_three">Third content</a></li> 
</ul> 

提前感謝!

+1

應該是「template.php?page = main」等。 – 2011-10-24 23:14:17

回答

2

您將不得不使用in_array()來測試允許的值。 array_key_exists將要求頁面名稱爲數組鍵。

其次,$_GET["page"]將爲空,因爲您沒有該名稱的get參數。你必須適應你的鏈接:

<li><a href="template.php?page=main">Main content</a></li> 
    <li><a href="template.php?page=page_two">Second content</a></li> 
    <li><a href="template.php?page=page_three">Third content</a></li> 

(或者以其他方式使用$_SERVER["QUERY_STRING"]可能不希望這樣做。)

你的第三個問題是使用:

include('subfolder/folder/'.$_GET['$page'].'.html'); 
          ^^^ ^^^ 

您應該只使用$page變量,您已從$_GET中讀取該變量。再次使用該名稱作爲密鑰將無法正常工作。你另外使用它單引號(雙重錯誤,但幸運的是沒有效果)。

因此,正確的是:

$all_pages = array("main", "page_two", "page_three");  
$page = $_GET['page']; 
if (in_array($page, $all_pages)) 
{ 
    include('subfolder/folder/'.$page.'.html'); 
} 
+0

非常感謝!我想我應該添加一個'else'來指向主要內容,對吧? '因爲最初它不會加載'主'的內容順便說一句,這個作品很棒! –

+0

是的,默認包含屬於'else'塊。 – mario

1

變化array_key_existsin_array。此外,變量$頁面可以設置,但是爲空,檢查以確保它不是空的if(!empty($page) && ...

+0

謝謝!掌握你的幫助! +1! –

相關問題