在使用include()函数时传递字符串时遇到麻烦。我有index.php,它用作模板文件,并且包含任何其他页面。
例如,如果要转到主页,则地址为http://somethingsomething.com/index.php?page=home,包含的文件为pages / home.php。在下面,您可以找到模板系统的工作方式。我想更改您当前所在的页面,但我不知道从页面标题传递该字符串的最佳方法是什么。因此,如果我在目录页面-http://somethingsomething.com/index.php?page=catalogue上,它将包含文件pages / catalogue.php,并且我尝试将字符串作为SESSION传递,但没有成功。请你帮助我好吗?
源URL:http://somethingsomething.com/index.php?page=catalogue
index.php文件
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1>Welcome, world!</h1>
<?php
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 'home';
}
if (preg_match('/^[a-z0-9]+$/', $page)) {
$insert = include('pages/' . $page . '.php');
if (!$insert) {
$insert = include('pages/error.php');
}
} else if (empty($page)) {
$insert = include('pages/error.php');
} else {
$insert = include('pages/error.php');
}
?>
</body>
</html>
pages / catalogue.php文件
<?php
$title = "Catalogue";
?>
答案 0 :(得分:1)
像这样吗?
<?php
ob_start();
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 'home';
}
if (preg_match('/^[a-z0-9]+$/', $page)) {
$insert = include('pages/' . $page . '.php');
if (!$insert) {
$insert = include('pages/error.php');
}
} else if (empty($page)) {
$insert = include('pages/error.php');
} else {
$insert = include('pages/error.php');
}
$output = ob_get_clean();
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1>Welcome, world!</h1>
<?php
echo $output;
?>
</body>
</html>