导航中的PHP Switch ID错误

时间:2010-09-26 12:25:02

标签: php navigation

我正在网站上工作,我一直在

注意:未定义的索引:第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']) {

任何帮助将不胜感激!

3 个答案:

答案 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
}