我在这里得到了这行代码:
<?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上传它时效果很好。
答案 0 :(得分:1)
这意味着$_GET['status']
未定义。这是指查询参数,因此index.php?status=something
您可以先查看它,例如if( isset($_GET['status'])){
答案 1 :(得分:1)
问题是你不是先检查是否有$_GET['status']
变量。例如,如果您按照以下方式转到您的网址:http://localhost/index.php
或http://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_errors
和error_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 = "";
}