PHP导航问题



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

<?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上冲入页面时,我会收到这个错误:

注意:未定义的索引:c: wamp www index.php在第5行5

任何人都知道为什么会发生这种情况吗?

当我将其上传到FTP上时,它可以正常工作。

问题是您不是首先检查是否有$_GET['status']变量。例如,如果您像这样转到URL:http://localhost/index.phphttp://localhost/,则没有$_GET变量集。使用您拥有的代码,只要您在URL中至少具有?status=,它将始终工作。您必须设置该变量,如果您要使用它。

最好先检查查看URL中是否有$ _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') ?>

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

您可以先检查一下,例如if( isset($_GET['status'])){

它仍然在您的Web服务器上产生通知,但是您的Web服务器配置不允许将其显示在屏幕上。

通过使用isset()。

来摆脱它。
if(isset($_GET["status"]) {
   $action = $_GET['status'];
} else {
   $action = "";
}

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

您本地环境和远程环境之间的区别是在配置中。该通知仍然存在,但没有显示。您可以通过php.ini中的display_errorserror_reporting变量对其进行配置,也可以在PHP中的运行时进行配置。

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

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

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

empty()功能还检查它是否存在(isset()功能),还检查它是否不是空的。

最新更新