php菜单导航包括

时间:2013-11-29 08:42:10

标签: php menu navigation

我在我的主页上工作,在我的布局中有一个包含的navigation.php。一世  基本上,布局中的代码是

DIV <?php include ('header.php'); ?>
DIV <?php include ('navigation.php'); ?>
DIV <?php
  if(is_null($GET["page"])) {
    $page = "home";
  }else{
    $page = $GET["page"];
  }
   include(''.$page.'.php');
?>

navigation.php中的代码是

<ul>
<li><a href='index.php?page="home"'><span>Home</span></a></li>
<li><a href='index.php?page="explore"'><span>Explore</span></a></li>
<li><a href='index.php?page="contact"'><span>Contact</span></a></li>
</div>
</ul>

然而,当点击链接时,家庭仍然被包括在内。

2 个答案:

答案 0 :(得分:0)

HY!

在列表标签​​中你有一个额外的撇号..它们不是必需的。

在html语言中链接标记<a href="src/file.html">click me</a>

如果你想使用php get-method,你可以编写简单的代码:

<a href="?page=contact">Im the contact link</a>

我希望我能提供帮助

顺便说一句: 用我流行的链接格式,我给你一个工作的示例代码(我认为,它更好,更安全) HY!

一个工作示例:

<?php  
if(!empty($_GET['page']))  
{  
if (!file_exists($_GET['page'].".php") )  
{  
include("home.php");  
}  
else  
{  
include($_GET['page'] .".php");  
}  
}  
else  
{  
include("home.php");  
}  
?> 

答案 1 :(得分:0)

首先回答你的问题:用于url参数的PHP超全局是 $ _ GET ,而不是 $ GET

正确的代码是:

DIV <?php include ('header.php'); ?>
DIV <?php include ('navigation.php'); ?>
DIV <?php
  if (!isset($_GET["page"]) || $_GET["page"] == "home") {
    $page = "home";
  } else if ($_GET["page"] == "explore") {
    $page = "explore";
  } else if ($_GET["page"] == "contact") {
    $page = "contact";
  } else {
    $page = "error";
  }

  include($page . '.php');
?>

你应该收到一个未定义变量的通知,这将帮助你调试这样的东西。检查您的error_reporting设置,确保在开发过程中输出通知,或查看日志。

其次,永远不要允许用户输入直接进入您的程序而不进行清理。上面的示例将让您对File Inclusion Vulnerability开放。相反,使用用户输入来检查特定值,如果要在代码示例中执行某些操作,请手动分配包含值。