我知道有关此问题的更多主题,我已阅读过,但我没有找到答案。
我有一个index.php,其中包含一堆.php包括:header.php,navigation.php,box.php,footer.php,以及“pages”div内部,我有一个需要的是不同的(基于navbar.php或box.php的链接)。
navbar.php示例:
<a href="index.php?v=pag1.php">Page1</a>
<a href="index.php?v=pag2.php">Page2</a>
的index.php:
<div id="wrapper">
<div id="header">
<div id="topbox">
<?php include ("box.php"); ?>
</div></div>
<div id="content">
<div id="bara">
<div id="navbar">
<?php include ("navbar.php"); ?>
</div>
</div>
<div id="pages">
<?php include ("$v"); ?>
</div>
</div>
<div id="footer">
<?php include("footer.php"); ?>
</div>
</div>
我想要包含的每个页面上都有$ v ='pag1.php',$ v ='pag2.php'等,但我得到“未定义的变量”错误“未定义的变量:V in C:\ wamp \ www \ test \ index.php第39行“
如果我在index.php中定义变量$ v,它可以工作,但这意味着我将不得不创建index.php的重复项,并且有点失败了。我只希望将pag1.php,pag2.php,pag3.php等包含在index.php中,而不是创建大量的副本。我可以使用html:)
我知道我可能会问一个愚蠢的问题,但我是php的新手,我不知道在哪里寻找答案。提前谢谢。
答案 0 :(得分:0)
您需要在调用之前定义$v
,您可以尝试:
<?php if(isset($_GET['v'])) {
$v = $_GET['v'];
} else {
$v = "home.php";
}
?>
<div id="wrapper">
<div id="header">
<div id="topbox">
<?php include ("box.php"); ?>
</div></div>
<div id="content">
<div id="bara">
<div id="navbar">
<?php include ("navbar.php"); ?>
</div>
</div>
<div id="pages">
<?php include ("$v"); ?>
</div>
</div>
<div id="footer">
<?php include("footer.php"); ?>
</div>
当然,如果未在网址中设置v
,则需要设置默认页面,因此其他home.php
答案 1 :(得分:0)
要在URL中传递变量,您需要使用$_GET
数组。它将在脚本运行之前自动填充,因此您只需要从中读取它。例如,$_GET['v']
将包含您通过网址(?v=...
)传递的值。
请注意,最好首先检查是否设置了值,否则如果不是这样,它会给你带来一个讨厌的错误。以下代码是处理未设置参数的简单方法:
if (isset($_GET['v'])) {
include($_GET['v']);
}
else {
include('default.php');
}
希望这可以解决它。
答案 2 :(得分:0)
严格来说,您只需要改变
<?php include ("$v"); ?>
到
<?php include $_GET['v']; ?>
这里有几点需要注意:
$_GET
数组中的项目,而不是自变量。 include
不需要括号。包含它们并没有错,但没有必要。 See the documentation。所以,总而言之,index.php的一个更好的实现是:
<?php
$v = "content/home.php"; // default page
if (isset($_GET['v'])) { // if the GET variable is set. If no v parameter is provided, asking for $_GET['v'] will cause an error in strict mode.
$v = "content/" . $_GET['v'] . ".php"; // keep some control on what can be opened.
}
if (!file_exists($v)) {
header("HTTP/1.0 404 Not Found"); // this has to be called before ANY content is sent (include newlines).
$v = "content/404.php";
}
?>
<div id="wrapper">
<div id="header">
<div id="topbox">
<?php include "box.php"; ?>
</div></div>
<div id="content">
<div id="bara">
<div id="navbar">
<?php include "navbar.php"; ?>
</div>
</div>
<div id="pages">
<?php include "$v"; ?>
</div>
</div>
<div id="footer">
<?php include"footer.php"; ?>
</div>
</div>