PHP获取$ page = $ _GET ['page']的错误;

时间:2014-01-24 09:54:39

标签: php

这是我的整个代码。与您分享。

这是我的错误:

Notice: Undefined index: page in /export/home/dynamic/index.php on line 20

我似乎无法弄清楚为什么我一直收到这个错误。这不是第一次,我怀疑它是阵列,但我不知道如何处理它。

假设在我的网站上创建一个动态更改页面。 在我创建像$page = $_GET['page'];

之类的全局变量之前,我遇到了错误

我对任何答案持开放态度,我对他们中的每一个人都非常感激。

<!DOCTYPE html>
<html>
<head>
<title>Website</title>
</head>
<body>
<header>Header<br />
<nav>
<a href="index.php?page=index">INDEX</a>
<a href="index.php?page=page1">Startsida</a>
<a href="index.php?page=page2">Anteckningar</a>
<a href="index.php?page=page3">Kontakt</a>
<!-- <a href="index.php?page=faq">FAQ</a> -->
</nav></header>

<div id="content">
<?php 

// Place the value from ?page=value in the URL to the variable $page. 
$page = $_GET['page']; 

// Create an array of the only pages allowed. 
$pageArray = array( 
       'index', 
       'page1', 
       'page2', 
       'page3', 
       'faq' 
         ); 

// If there is no page set, include the default main page. 

if (!$page) { 
  include('pages/index.php'); 
} 

// Is $page in the array? 
$inArray = in_array($page, $pageArray); 

// If so, include it, if not, emit error. 
 if ($inArray == true) { 
  include('pages/'. $page .'.php'); 
}else { 
  echo 'Umm tisk tisk. You should not be messing with things.'; 
} 
?> 
</div>

<footer>Footer</footer>

</body>
</html>

它已经解决了! 感谢hek2mgl我的代码现在正常运行。

我要感谢其他人提交我的问题的答案。我欠你们的。

5 个答案:

答案 0 :(得分:5)

您需要检查是否通过GET vars传输page

if(isset($_GET['page'])) {
    $page = $_GET['page'];
} else {
    // set proper default value if it was not set
    $page = 'index';
}

在下一步中,您需要检查$page是否包含正确的值:

if(!in_array($page, $pages)) {
    die('page was not found');
}

答案 1 :(得分:1)

您正在分配一个不存在的值。在使用$ _GET之前,您应该检查它是否存在。

使用isset($_GET['page'];)

答案 2 :(得分:1)

这是因为'page'不是$_GET中的现有索引。你可以检查它是第一个

$page = isset($_GET['page']) ? $_GET['page'] : "";

或者你可以沉默通知

$page = @$_GET['page'];

之后,只需检查该页面是否为已知页面

$page = in_array($page, $knownPages) ? $page : "index";

答案 3 :(得分:1)

$p = array("Home", "About", "Hosting", "VPS","GameServer","Contact");
     if(isset($_GET['page']) AND in_array($_GET['page'],$p))
        {
            include('pages/'.$_GET['page'].'.php');
        }else{
            include('pages/home.php');
        }

答案 4 :(得分:0)

只需稍加修饰

<?php 

$p = array("Home", "About", "Hosting", "VPS","GameServer","Contact");

if ((isset($_GET['page']) || !empty($_GET['page'])) && in_array($_GET['page'], $p))

    {
        include('pages/'.$_GET['page'].'.php');

}else{

        include('pages/home.php');
    }

?>