包含两到三页并通过ID包含它们的正确方法是什么,例如: index.php?page = one 将包含 one.html 和 index.php?page = two 将包含 two.html 到同一个php页面?
答案 0 :(得分:1)
虽然之前的两个答案都容易受到文件包含攻击,但我建议使用预定义的可用页面数组来实现不同的方法:
<?php
$pages = array('one'=>'one.php',
'two'=>'two.php');
if(in_array($_GET['page'], array_keys($pages))) {
// only include if the page is really defined in your $pages array
include($pages[$_GET['page']]);
} else {
// don't include or simply include a default page here
// include('default.php');
}
?>
这是你想要的吗?
答案 1 :(得分:0)
编辑:鉴于以下不可否认的观点,设置一系列允许的网页也是一个好主意。
<强> URI:强>
index.php?pages=one,two,three
<强>脚本:强>
$allowedPages = array('one', 'two', 'three');
if($_GET['pages']){
foreach(explode(',', $_GET['pages']) as $page){
if(file_exists($page.'.html') && in_array($page, $allowedPages)){
include_once($page.'.html');
}
}
}
或URI中的数组,保持page
查询字符串变量为单数:
<强> URI:强>
index.php?page[]=one&page[]=two&page[]=three
<强>脚本:强>
$allowedPages = array('one', 'two', 'three');
if($_GET['page']){
foreach($_GET['page'] as $page){
if(file_exists($page.'.html') && in_array($page, $allowedPages)){
include_once($page.'.html');
}
}
}
答案 2 :(得分:-1)
您必须检查文件是否存在以及$_GET['page']
是否为有效值
<?php
$pageName = $_GET['page'] . '.php';
if(isset($pageName) && $pageName != '')
{
if(file_exists($pageName))
{
require_once($pageName);
}
}
?>