我在我的主页上工作,在我的布局中有一个包含的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>
然而,当点击链接时,家庭仍然被包括在内。
答案 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开放。相反,使用用户输入来检查特定值,如果要在代码示例中执行某些操作,请手动分配包含值。