这就是我设置文件的方式:
的index.php:
include($sys->root_path.'sections/start.php'); // Includes everything from <html> to where we are now
if (isset($_GET['page'])) {
$page = $_GET['page'].'.php';
} else {
$page = 'index.php';
}
if (isset($_GET['cat'])) {
$cat = $_GET['cat'];
} else {
$cat = '';
}
include($sys->root_path.'/content/'.$cat.'/'.$page);
include($sys->root_path.'sections/end.php'); // Includes everything from here to </html>
要查看此页面,请访问:example.com/index.php?cat=red&page=car
这将显示一个包含该文件内容的页面:
/content/red/car.php
我遇到的问题是我想为每个页面指定标题,元描述等,并在调用此特定页面的任何特定数据之前将其输出到start.php
中的页面
我希望做的是这样的事情:
/CONTENT/RED/CAR.PHP:
<?php $page_title = 'Title of the page'; ?>
<p>Everything below is just the page's content...</p>
如果在此特定页面的内容之前抓取所有数据,我如何在网站的<head>
中使用此页面特定数据?
答案 0 :(得分:1)
您可以执行以下操作:
switch($_GET['page']) {
case 'car':
// Here you could have another conditional for category.
$page_title = 'Title of the page';
break;
// Other cases.
}
include($sys->root_path.'sections/start.php');
在start.php中你可以有类似的东西:
<title><?php echo $page_title; ?></title>
我必须反对这种包含内容的方式。这是不安全的。有人可以浏览您的服务器文件或包含您不想要包含的内容。除非总是通过正则表达式或其他东西过滤该变量,否则不应该通过这种方式包含文件(通过获取变量)。
答案 1 :(得分:1)
正在尝试做的事情的正确方法是使用数据库和 apache url_rewrite。我的答案只是针对您的问题的 修复 。
在start.php
下面加if statment
,这样当你包含start.php时,你已经知道你需要哪个页面,如下所示:
if (isset($_GET['page'])) {
$page = $_GET['page'].'.php';
} else {
$page = 'index.php';
}
if (isset($_GET['cat'])) {
$cat = $_GET['cat'];
} else {
$cat = '';
}
include($sys->root_path.'sections/start.php');
现在,在start.php
内使用一个开关:
<?php
switch ($cat) {
case "blue":
$title = "The car is $page";
break;
case "green":
$title = "The car is $page";
break;
case "red":
$title = "The car is $page";
break;
default:
$title = "Welcome to ...";
}
?>
<!DOCTYPE html>
<head>
<title><?php echo $title ?></title>
</head>
etc...
答案 2 :(得分:0)
我的建议是使用MVC方法,使用函数传递参数或使用setter函数进行OOP。