2012-07-17 132 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