Php导航问题

时间:2014-02-05 23:24:35

标签: php navigation

我在这里得到了这行代码:

<?php include_once('pages/component/header.php') ?>
<?php include_once('pages/component/nav.php') ?>
<!-- BODY -->
<?php 
$action=$_GET['status'];
switch($action)
{
     case 'about': include_once "pages/about.php";break;
     case 'portfolio': include_once "pages/portfolio.php";break;
     case 'contact': include_once "pages/contact.php";break;
     default : include_once "pages/default.php";break;

}
?>
<?php include_once('pages/component/footer.php') ?>

但是当我在WAMP localhost上浏览页面时,我收到此错误说:

注意:未定义的索引:第5行的C:\ wamp \ www \ index.php中的状态

有没有人知道为什么会这样?

我在FTP上传它时效果很好。

4 个答案:

答案 0 :(得分:1)

这意味着$_GET['status']未定义。这是指查询参数,因此index.php?status=something

您可以先查看它,例如if( isset($_GET['status'])){

答案 1 :(得分:1)

问题是你不是先检查是否有$_GET['status']变量。例如,如果您按照以下方式转到您的网址:http://localhost/index.phphttp://localhost/,则表示没有设置$_GET变量。使用您拥有的代码,只要您在网址中至少有?status=,它就会一直有效。如果您打算使用它,必须设置该变量。

最好先检查以查看网址中是否有$ _GET变量。这应该可以解决您的问题:

<?php include_once('pages/component/header.php') ?>
<?php include_once('pages/component/nav.php') ?>
<!-- BODY -->
<?php 
$action= (isset($_GET['status'])) ? ($_GET['status']) : ('');
switch($action)
{
     case 'about': include_once "pages/about.php";break;
     case 'portfolio': include_once "pages/portfolio.php";break;
     case 'contact': include_once "pages/contact.php";break;
     default : include_once "pages/default.php";break;

}
?>
<?php include_once('pages/component/footer.php') ?>

答案 2 :(得分:0)

它说$_GET['status']根本不存在。这不是一个错误,而是一个通知。

您的本地环境与远程环境之间的区别在于配置。此通知仍然存在,但它没有显示。 您可以通过PHP.ini中的display_errorserror_reporting变量对其进行配置,或者在PHP中运行时配置它们。

要解决此问题,您可以在使用之前检查它是否存在。

$action=isset($_GET['status'])?=$_GET['status']:'';

$action=empty($_GET['status'])?=$_GET['status']:'';

empty()函数还检查它是否存在(isset()功能)并检查它是否为空。

答案 3 :(得分:0)

它仍会在您的网络服务器上生成通知,但您的网络服务器配置不允许它显示在屏幕上。

使用isset()摆脱它。

if(isset($_GET["status"]) {
   $action = $_GET['status'];
} else {
   $action = "";
}