1

我有一个包含 4 个链接的页面,即 1st.php、2nd.php、3rd.php 和 4th.php。我的 index.php 默认显示 3rd.php。我还创建了一个 404.php(错误页面),这样当用户编辑 URL 时,它不会重定向到 index.php,而是显示错误页面。问题是当我打开我的 index.php 页面时,它会显示错误页面。需要帮忙。这是我的代码:

 <?php 

  $quarters = array('Q1', 'Q2', 'Q3', 'Q4');
        $quarter = 'Q3';

        if(isset($_GET['quarter']) && in_array($_GET['quarter'], $quarters)) {
          $quarter = $_GET['quarter'];  
        }

        switch($quarter) {
          case 'Q1' :
            $quarter = 'firstq2012.php';
          break;
          case 'Q2' :
            $quarter = 'secondq2012.php';
          break;
          case 'Q3' :
            $quarter = 'thirdq2012.php';
          break;
          case 'Q4' :
            $quarter = 'fourthq2012.php';
          break;
        }

    $pages = array('Q1','Q2','Q3','Q4');
    if (in_array($_GET['quarter'], $pages)){            
                    include_once $quarter;  
 }
 else {
 header('Location: 404.php');
  }
?>
4

2 回答 2

0

如果之后重新初始化 $ Quarter,为什么要向季度添加 GET 数据?如果您有 1st.php 而不是 firstq2012.php,则重新初始化的 $quarter 会存储不正确的文件名。如果 $_GET['quarter'] 不存在,如果只打开 index.php 而不是 index.php?q=...,那么它会重定向。我建议在你的 switch...case 你创建变量 $filename = '1st.php'; 然后检查if (in_array($_GET['quarter'], $pages)){
include_once $quarter;
} else { header('Location: 404.php'); }
if (in_array($quarter, $pages)) { include_once $filename; } else { ... }

于 2012-07-23T08:30:49.923 回答
0

你的代码可以清理很多。

尝试使用这个:

<?php 
$quarters = array('Q1' => 'firstq2012.php', 'Q2' => 'secondq2012.php', 'Q3' => 'thirdq2012.php', 'Q4' => 'fourthq2012.php');
if(isset($_GET['quarter'])) {
    if(in_array($_GET['quarter'], array_keys($quarters))) {
        include_once $quarters[$_GET['quarter']];
    } else {
        header('Location: 404.php');
    }
} else {
    include_once $quarters['Q3'];
}
?>
于 2012-07-23T08:44:19.093 回答