我正在网站上工作,我一直在
注意:未定义的索引:第3行的文件根目录中的id
我知道它很简单,但无法确定问题的确切位置。
这是代码:
<?php
switch($_GET['id']) {
default:
include('pages/hello.php');
break;
case "testimonials":
include('pages/testimonials.php');
break;
case "faq":
include('pages/faq.php');
break;
case "raq":
include('pages/raq.php');
break;
case "contact":
include('pages/contact.php');
break;
}
?>
第3行将是<?php switch($_GET['id']) {
任何帮助将不胜感激!
答案 0 :(得分:3)
这是因为在您的网址中id=x
并不总是设置,所以当您尝试切换值时,它不在那里。你应该做的是这样:
<?php
$id = isset($_GET['id']) ? $_GET['id'] : ''; //This is just a short if-else
switch($id)
{
default:
include('pages/hello.php');
break;
case "testimonials":
include('pages/testimonials.php');
break;
case "faq":
include('pages/faq.php');
break;
case "raq":
include('pages/raq.php');
break;
case "contact":
include('pages/contact.php');
break;
}
?>
Basciall $id = isset($_GET['id']) ? $_GET['id'] : '';
这就是说,IF id在url中然后使用它,否则使用空字符串,空字符串的原因是它会触发switch语句中的default:
这样,$ id将始终设置为某种东西。
答案 1 :(得分:1)
确保设置了id
,默认情况应该在最后:
if (!isset($_GET['id'])) {
include('pages/hello.php');
}
else{
switch($_GET['id']) {
case "testimonials": include('pages/testimonials.php'); break;
case "faq": include('pages/faq.php'); break;
case "raq": include('pages/raq.php'); break;
case "contact": include('pages/contact.php'); break;
default: include('pages/hello.php'); break;
}
}
出于安全原因,请务必使$_GET['id']
恢复正常。我建议你设置一个允许的页面数组,并包括数组中的那些页面。您可以使用in_array
功能。
答案 2 :(得分:0)
似乎没有定义url参数'id',这是通知的原因。
您应首先检查其存在,例如
if (isset($_GET['id'])) {
your code here
}