2012-07-17 114 views
0

我通常使用下面的代碼將我需要的頁面包含到我的網站正文中,以便在點擊鏈接時包含頁面。如何在php中包含頁面

<?php 
     switch($_GET['page']){ 

      case '1': 
      if(file_exists('main.php')) 
      { 
     include_once('main.php'); 
      break; 
      } 


      default: 
     include_once('main.php'); 
      break; 
      } 
?> 

但後來我加入的情況下,要改變這種每次我添加菜單項「2」 ...等 ,現在我的問題可以這樣寫短/動態,這樣我就可以添加一個鏈接而不必隨處更改代碼片段?

PS:我沒做那麼一點點短..但它仍然不夠好,我認爲..

我也想補充一點:我收到從ini文件我的鏈接。我把它放在那裏是這樣的:

[導航] main.php =「家」

if (!isset($_GET['page'])) { 
     $_GET['page'] = 'main.php'; 

    } 
    switch ($_GET['page']){ 
     case 'main.php': 
     case 'about.php': 
     case 'portfolio.php': 
     case 'tips.php': 
     $file = $_GET['page']; 
     break; 
     default: 
     $file = '404.html'; 
    } 
    include_once $file; 

,纔有可能從ini文件中得到這個嗎?

+0

!只需使用一些數據庫文件或數據庫服務器 – Serjio 2012-07-17 10:52:20

+0

嗯,我更喜歡從ini文件而不是數據庫創建我的鏈接..但它應該如何與db一起工作? – Reshad 2012-07-17 10:54:38

+0

你會很好地清理傳入的值,確保沒有人強制你的腳本包含它們不應該包含的文件。像這樣'$ _GET ['page'] = str_replace(array('..','/','\'),'',$ _GET ['page']);''將刪除\,/ ,並防止一些惡意的人遍歷你的文件系統。 – 2012-07-23 16:42:11

回答

1

試試這個:

$page = isset($_GET['page']) ? $_GET['page'] : "main.php"; 
if(file_exists($page)) include($page); 
else include("404.html"); 
當然
+0

我會在這裏發帖,以確保它是正確的:你會很好地清理傳遞的值,確保沒有人強迫你的腳本包含它們不應該包含的文件。像這樣簡單的$ page = str_replace(array('..','/',''),'',$ page);將刪除\,/,..並阻止一些惡意的人遍歷文件系統。 – 2012-07-23 16:43:47

+0

看起來像LFI等待發生 – blockhead 2012-07-23 16:45:09

+0

這工作!非常感謝,學到了新的東西! – Reshad 2012-07-24 08:41:45

相關問題