0

我需要有人让我知道这个问题的解决方案。我正在尝试在我的 index.php 文件上创建一个包含,因此当用户单击导航栏上的链接时,index.php 上的内容会发生变化。下面的代码效果很好,除了当我转到 index.php 时,因为它不是数组的一部分,它调用 main.php 两次,而不是一次。我知道这是因为最后一部分说:

    else {
    include('main.php');
    }

但是,我需要一个解决方案,因为我不擅长 php。这是我包含的完整代码。

    <?php
    // Place the value from ?page=value in the URL to the variable $page.
    $page = $_GET['id'];
    // Create an array of the only pages allowed.
    $pageArray = array('index','css-pub1','page2','page3','page4','page5','page6');
    // If there is no page set, include the default main page.
    if (!$page) {
    include('main.php');
    }
    // Is $page in the array?
    $inArray = in_array($page, $pageArray);
    // If so, include it, if not, emit error.
    if ($inArray == true) {
    include(''. $page .'.php');
    } 
    else {
    include('main.php');
    }
    ?>
4

4 回答 4

1

只需删除

if (!$page) {
    include('main.php');
}

让 else 处理 main.php

于 2013-09-27T16:31:25.237 回答
1

尝试使用include_once而不是include

include_once($page . '.php');
//...
include_once('main.php');
于 2013-09-27T16:27:33.563 回答
0

这是因为您试图获取错误的$_GET参数。应该:

$page = $_GET['page'];

如果你的评论是准确的。

于 2013-09-27T16:27:19.100 回答
0

我已经评论了问题和修复的代码。

<?php
// initilize $page
$page='';
// Place the value from ?page=value in the URL to the variable $page.
if (isset($_GET['id'])){ // check if the page is set
    $page = $_GET['id'];
}
// Create an array of the only pages allowed.
$pageArray = array('index','css-pub1','page2','page3','page4','page5','page6');

/* This section is not needed
// If there is no page set, include the default main page.
if (!$page) {
include('main.php');
}
*/

// Is $page in the array?
$inArray = in_array($page, $pageArray);
// If so, include it, if not, emit error.
if ($inArray == true) {
include(''. $page .'.php');
} 
else {
// If there is no page set, include the default main page.
// this also does the same thing as the commented if loop above
include('main.php');
}
?>
于 2013-09-27T16:31:26.750 回答