如何在此代码中添加默认页面?例如:在我的情况下访问domain.com将显示包含的“主页”页面,但是如何在pages数组中定义它?我不想输入domain.com/index.php?page=home只是因为在数组中指定了名称“home”。我希望domain.com www.domain.com和domain.com/index.php?page=home都是相同的,如果这样做的话。谢谢。
<?php
$pages = array('home', 'about', 'services', 'faq');
$titles = array('Home', 'About us', 'Services', 'FAQ');
$index = array_search($_POST['p'], $pages);
if ($index !== false) {
$page_content = 'includes/' . $pages[$index] . '.php';
$title_name = $titles[$index];
} else {
print 'Page not found';
}
?>
答案 0 :(得分:2)
目前,您正在关注$_POST['p']
。如果没有为$_POST['p']
指定值,则可以使用默认值。尝试这样的事情:
$pages = array('home', 'about', 'services', 'faq');
$titles = array('Home', 'About us', 'Services', 'FAQ');
$page = 'home';
if (isset($_POST['p'])) {
$page = $_POST['p'];
}
$index = array_search($page, $pages);
if ($index !== false) {
$page_content = 'includes/' . $pages[$index] . '.php';
$title_name = $titles[$index];
} else {
print 'Page not found';
}
这里我们略微抽象了变量背后的$_POST['p']
值。这允许我们为该变量定义默认值,并且仅在提供$_POST['p']
时才覆盖该值。搜索是在该变量上进行的。
答案 1 :(得分:0)
我想提出一个比@ David的答案清晰的方法:
$pages = array(
'home' => 'Home',
'about' => 'About us',
'services' => 'Services',
'faq' => 'FAQ'
);
$page = 'home';
if (isset($_POST['p']) && array_key_exists($_POST['p'], $pages)) {
$page = $_POST['p'];
}
$page_content = 'includes/' . $page . '.php';
$title_name = $pages[$page];
请注意,OP希望显示“默认”页面(即home.php),因此不需要“找不到页面”。
答案 2 :(得分:0)
感谢所有回复。我有一个按预期工作的switch语句,但它没有提供没有找到的页面。我基本上想要这个以防万一有人试图直接输入网址如domain.com/index.php?page=abc或者拼错了页面名称,所以它会显示我找不到的页面。我发现这段代码几天了在这里,我认为这将有助于清理长切换语句。所以找不到的页面是我想要的。 @david ...我快速测试了你的代码,但是如果我尝试一个知道在include文件夹中的页面,它仍然只显示默认的“home”页面。