将默认主页添加到以下代码中

时间:2014-02-27 02:06:56

标签: php arrays default

如何在此代码中添加默认页面?例如:在我的情况下访问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';
}

?>

3 个答案:

答案 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”页面。