我正在用php编写一个项目,它基本上会给我一个网页,其中包含以下内容的链接:
所有内容都将直接嵌入网页内,而不是链接到网站。
为了简化这个,我创建了一个主模板“index.php”,然后使用$_GET
我将页面和其他信息传递给模板,然后由一个页面检查脚本处理,该脚本执行一些ifs确定加载到网站的PHP脚本。
我的问题在于,当前的方法是将目前的方法加载到网站上的首选方法
if ($_GET["page"] == "videos"){
include ("dynapage/scripts/videos/videos.php");
}
if ($_GET["page"] == "music"){
include ("dynapage/scripts/music/music.php");
}
等等
使用包含将此代码添加到我的模板中是一件好事,还是有更好的方法可以建议?
注意:支票中已包含isset
的支票,并可根据要求提供附加费用。
答案 0 :(得分:6)
使用一个数组,其中$_GET["page"]
值为键,php文件名为值。然后,您只需要检查它是否在数组内,如果是,请包含它。然后,您将值写入数组,而不是编写许多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']);
}
答案 1 :(得分:2)
也许是这样的事情:
$config = array(
'videos' => 'dynapage/scripts/videos/videos.php',
'music' => 'dynapage/scripts/music/music.php'
);
if(isset($config[$_GET['page']])) {
include($config[$_GET['page']]);
}
稍微好一些,然后编写许多if子句(;
答案 2 :(得分:0)
看起来你可以这样做:
if( file_exists($fn = "dynapage/scripts/".$_GET['page']."/".$_GET['page'].".php"))
include($fn);