2011-12-05 36 views
1

我有不同的mods,如用戶,統計等。如果我點擊用戶,我會得到關於用戶的信息,如果我點擊統計信息,我會得到用戶統計信息等等。但我想用php(不是OOP)自動執行 - 自動包含和調用文件(例如users.php,statistics.php和其他)mods文件夾。我知道PHP OOP具有自動加載類功能。但我不知道PHP面向對象。如何在不使用OOP的情況下使用PHP? 我想鏈接是這樣的:如何使用php自動包含文件而不是OOP?

<a href='index.php?mod=users'>User list</a> <a href='index.php?mod=statistics'>Statistics</a> 
+0

包括所有文件夾MODS杜或您希望其自動包括文件夾MODS users.php如果$ _GET [「MOD」]是用戶? – noob

+0

@micha如果$ _GET [「mod」]爲users – Someone

回答

2
if (isset($_GET["mod"]) && file_exists("mods/" . preg_replace("/[^\w\d]+/", "", $_GET["mod"]) . ".php")) { 
    include "mods/" . preg_replace("/[^\w\d]+/", "", $_GET["mod"]) . ".php"; // or: require("mods/" . preg_replace("/[^\w\d]+/", "", $_GET["mod"]) . ".php"); 
} 
+0

我想自動包含來自文件夾mods的users.php您需要清理輸入。如果有人制作了一個URL,其中$ _GET ['mod']是../../../../../../../etc/passwd或類似的URL?包含和要求之間的區別不僅僅是一個比另一個更現代。 – liquorvicar

+0

@liquorvicar我如何清理輸入? – Someone

+1

@EmilAzizov在liquidvicar提醒我應該這樣做後,我直接清理輸入。 – noob

0

使用switch/case或MOD衛生的一些系統。

// BASE_PATH is some previously defined application path constant 

// fetch $mod from $_GET, and if set strtolower() it 

switch($mod){ 
    case 'user': 
    case 'admin': 
    case 'statistics': 
     $path = realpath(BASE_PATH . "/mods/{$mod}.php"); 
     if(false === $path || !is_file($path)){ 
      // error, 404? 
     } 
     require $path; 
     break; 
    default: 
     // invalid mod, 404? 
     break; 
} 

// and so forth 
要自動
相關問題