动态页面包含——任何更好的方法


Dynamic page include - any better ways to do it?

我为我的网页游戏编写了一个简单的菜单

每个页面都是这样访问的:

http/localhost/index.php?page=PAGENAME

我的include系统现在是这样工作的:

switch($page) {

 case "login":
        include "login.php";
        break;
 //Other 110 cases...
 case "authors":
       include "authors.php";
       break;
}

你可以看到它不是动态的,每个页面都必须添加到切换菜单。它工作得很好,但过了一段时间,我的代码变得越来越大。现在这个开关包含近125个箱子,是一个需要维护的PITA。

我的问题是——有没有更好的、安全的、动态的方法来做到这一点?

我知道我可以这样做:

include $page.".php";

但是这很不安全,我不想这么做

如果你不想使用框架来处理你的url,并希望像这样保存url,那么我建议在这种情况下使用以下方法:

$pages = array(
    'login',
    'authors',
    //...
);
if(in_array($page, $pages))
    include $page .'.php';
else
    include 'not_found.php';

您甚至可以做得更好,生成动态读取目录中的PHP文件的$pages数组。