我在这里得到了这条代码行:
<?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.php
或http://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_errors
和error_reporting
变量对其进行配置,也可以在PHP中的运行时进行配置。
要解决它,您可以在使用之前检查它是否存在。
$action=isset($_GET['status'])?=$_GET['status']:'';
或
$action=empty($_GET['status'])?=$_GET['status']:'';
empty()
功能还检查它是否存在(isset()
功能),还检查它是否不是空的。