2011-12-29 80 views
1

我正在寫一個PHP項目,基本上都會給我一個網頁鏈接到的東西像一個更清潔的方式:存儲在有沒有寫這避免包括

  • 包含我最喜愛的YouTube視頻頁面MySQL數據庫
  • 用我所有的最喜歡的遊戲
  • 和音樂頁面ECT

都將是網頁內直接內嵌而不是鏈接到該網站。

爲了簡化這個,我製作了一個主模板「index.php」,然後使用$_GET我將頁面和其他信息傳遞給模板,然後由頁面檢查腳本處理,該腳本執行若干ifs以確定什麼PHP腳本加載到網站。

在哪裏,我的問題所在是什麼加載theese腳本到網站作爲我的當前方法的首選方法是

if ($_GET["page"] == "videos"){ 
    include ("dynapage/scripts/videos/videos.php"); 
} 

if ($_GET["page"] == "music"){ 
    include ("dynapage/scripts/music/music.php"); 
} 

ECT

是使用包括該代碼添加到我的模板是好事要做還是有更好的方法可以建議?

注意:支票isset的支票已包含在支票中,並可根據要求提供附加pbs。

+1

使用具有'$ _GET [「頁面」]'值作爲鍵和php文件名作爲值的數組。你只需要檢查它是否在數組中,如果是的話,就包含它。然後,您將值寫入數組,而不是編寫多個「if」子句。 – hakre 2011-12-29 22:19:01

+0

在筆記上我剛剛意識到這不會是我的項目的問題,但不會成爲一個文件名的$ _GET URL並加載該文件的黑客攻擊行爲 – rees92 2011-12-29 22:32:54

回答

2

也許事情是這樣的:

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

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

好一點,如果當時寫的許多條款(;

0

看起來你可以這樣做:

if(file_exists($fn = "dynapage/scripts/".$_GET['page']."/".$_GET['page'].".php")) 
    include($fn); 
+7

玩火。 – hakre 2011-12-29 22:21:05

+0

非常感謝,使得比使用多個ifs更有意義,我會很高興地投票給你,但我沒有15代表所以請接受我的許多gratefull感謝 – rees92 2011-12-29 22:25:03

+1

不安全,與控制陣列hakre的或ahmet的答案去,只有已正確批准的頁面已加載。 – Phoenix 2011-12-29 22:36:47

6

使用陣列將$_GET["page"]的值作爲關鍵字,將php的文件名作爲值,然後只需檢查它是否在數組中,如果是,則包含它,然後將值寫入數組而不是w列舉了許多if條款。

下面的代碼示例顯示了這一點,另外它還有一個函數來加載頁面,因爲包含的腳本沒有在上下文中偶然包含的變量中設置變量。

$pages = array(
    'videos' => 'videos/videos.php', 
    'music' => 'music/music.php', 
); 

/** 
* include a page template 
*/ 
function load_page(array $pages, $page, $path = 'dynapage/scripts') 
{ 
    if (isset($pages[$page])) return; 
    include ($path.'/'.$pages[$page]); 
} 

if (isset($_GET['page'])) 
{ 
    load_page($pages, $_GET['page']); 
} 
+0

感謝您的文章,我喜歡它,因爲它可以防止黑客有關錯誤的$ _GET值,但是我無法使用它,因爲我沒有得到如何編輯它,如果我選擇讓所有文件insiide腳本目錄而不是腳本/視頻/視頻.php我可以使用/腳本/視頻。php – rees92 2011-12-29 22:46:35

+0

是的,路徑前綴的函數有錯誤。這只是一個例子,根據自己的需要進行編輯,您也可以使用完全合格的路徑。 – hakre 2011-12-29 22:47:51

+0

我跟ahmets一起使用,因爲它使用相同的基本概念,但爲修改你的腳本id根文件工作,但我的PHP最基本的,但我apreciate你的貢獻 – rees92 2011-12-29 22:51:59

相關問題