1
<?php  
$p = $_GET['page'];

$page = $p.".php";

if(file_exists($page))
    include($page);
elseif($p=="")
    include("home.php");
else
    include("404.php");

?>

这段代码给了我 $page 变量的未定义索引错误,我尝试这样做......

<?php  
$p = $_GET['page'];

if(isset($page)){$page = $p.".php";}

if(file_exists($page))
    include($page);
elseif($p=="")
    include("home.php");
else
    include("404.php");

?>

但这什么也没做。我仍然是 PHP 的新手,我不确定我需要做什么来解决这个问题。有什么建议么?

编辑:对于每个想要 URL 的人:http : //memphislinuxboy.tk/ 另外,对于那些想要了解安全性的人,包含的文件必须是 .PHP

4

3 回答 3

3

我想$_GET['page'];没有设置,检查进入的 URL 以确保它在某些时候包含“page =”。

你可以用

if(isset($_GET['page']) {
    //your code
}

无关:

if(file_exists($page))
    include($page);

您正在尝试包含客户端指定的文件。如果处理不当,这可能是一个严重的安全漏洞。最好检查已知(良好)文件的列表。

于 2013-08-16T15:47:41.183 回答
0

$_GET['page']未在您的代码中设置您的网址需要包含?page=somepage

<?php  

    $page = (isset($_GET['page']) ? $_GET['page'] : 'home') . '.php';

    if(file_exists($page)){
        include($page);
    } else {
        include("404.php");
    }

?>
于 2013-08-16T15:55:30.620 回答
0

该行$p = $_GET['page'];正在引发错误。

您正在尝试访问尚未设置的数组元素。

在使用它之前检查以确保该值存在。

if (isset($_GET['page']))
{
    $page = $_GET['page'];
}
else
{
    // this is the page they'll have if they havnt specified one
    $page = 1;
}
于 2013-08-16T15:48:04.280 回答