2011-12-29 56 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

相关问题