为什么我会收到未定义的索引错误?

时间:2013-08-16 15:45:00

标签: php indexing undefined

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

$page = $p.".php";

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

?>

这段代码给我一个$ page变量的Undefined Index错误,我试过了 这样做......

<?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的新手,我不知道我需要做些什么来解决这个问题。 有什么建议吗?

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

3 个答案:

答案 0 :(得分:3)

我认为$_GET['page'];未设置,请检查进入的网址,确保它在某个时刻包含“page =”。

您可以使用

解决此问题
if(isset($_GET['page']) {
    //your code
}

非主题:

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

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

答案 1 :(得分: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;
}

答案 2 :(得分:0)

您的代码中未设置

$_GET['page'],您的网址需要包含?page=somepage

<?php  

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

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

?>