我将在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>
你能解决吗?
答案 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"] : '';