错误在哪里?

时间:2015-02-11 10:22:10

标签: php forms variables get

我将在index.php

上创建一个带有此代码的算法菜单
 <?php
$menu=$_GET[menu];
$file=$_GET[file];

if(!isset($menu))
{
    $menu="home";
}
if(($menu=="'")||($menu="-")||($menu="/"))
{
    $menu="home";
}
switch($menu)
{
    case'home':
        $file="isi/home.html";
    break;
    case'profile':
        $file="isi/profile.html";
    break;
    case'gallery':
        $file="isi/lihat_bukutamu.php";
    break;
    case'download':
        $file="isi/lihat_bukutamu.php";
    break;
    case'contact':
        $file="isi/buku_tamu.php";
    break;
}
include"header.php";
include"menu.php";
include"content.php";
include"footer.php";
?>

但是当我尝试这个脚本时它会告诉我

  

注意:使用未定义的常量菜单 - 假设&#39;菜单&#39;在   第2行的C:\ xampp \ htdocs \ layout \ index.php

     

注意:未定义索引:C:\ xampp \ htdocs \ layout \ index.php中的菜单   第2行

     

注意:使用未定义的常量文件 - 假设&#39;文件&#39;在   第3行的C:\ xampp \ htdocs \ layout \ index.php

     

注意:未定义的索引:C:\ xampp \ htdocs \ layout \ index.php中的文件   第3行

这是menu.php

<div id="menu-content">
            <div id="menu">
                <h3 class ="judul_1">Main Menu</h3>
                    <ul>
                        <li><a href="index.php?menu=home">Home</a></li>
                        <li><a href="index.php?menu=profile">Profile</a></li>
                        <li><a href="index.php?menu=gallery">Gallery</a></li>
                        <li><a href="index.php?menu=download">Download</a></li>
                        <li><a href="index.php?menu=contact">Contact</a></li>
                    </ul>
                </div>
你能解决吗?

4 个答案:

答案 0 :(得分:2)

在变量周围添加引号,如下:

$menu=$_GET['menu'];
$file=$_GET['file'];
...

答案 1 :(得分:1)

您在数组中指定Constant,但未定义。将其指定为字符串

更改此

$menu=$_GET[menu];
$file=$_GET[file];

$menu=$_GET['menu'];
$file=$_GET['file'];

希望这有助于你

答案 2 :(得分:0)

在其他答案中指出添加引号将消除通知,但不会改变脚本的工作方式(PHP会添加引号)。

你没有对$file变量做任何事情。我想你想把它包含在页眉和页脚之间。

include "header.php";
include "menu.php";
include "content.php";
include $file;
include "footer.php";

注意我不建议通过GET / POST传递file,因为如果没有正确保护,攻击者可以使脚本包含/显示文件系统中的任意文件。

答案 3 :(得分:0)

首先,你在$ _GET [menu]中缺少引号。在获取请求参数时,您应该使用的另一件事是设置或清空。

示例:

$menu= !empty($_GET["menu"]) ? $_GET["menu"] : '';