如果存在于array} else {

时间:2011-08-29 09:28:58

标签: php

我目前使用以下脚本检查我的数组中是否存在某个页面然后打开它,否则会打开我的error.php

<?php
    $page = $_GET['page'];
    $pages = array('p_1',
                   'p_2',
                   'p_3',
                   'error');

    if (!empty($page)) {
     if(in_array($page, $pages)) {
        $page .= '.php';
        require_once('../' . $page . '');
    }
     }
    else {
        require_once('../error.php');
    }
?>

无意中(直到现在我没有测试它)我在我的网站上添加了一个newpage.php,忘了把它添加到我的阵列中。

但我的脚本不是显示我的error.php而是打开了newpage.php。

我哪里出错了?

谢谢

2 个答案:

答案 0 :(得分:4)

很抱歉这么说,但是不可能。不在这段代码中。搜索要求/包括其他地方

并且,只有在$_GET['page']为空的情况下才会显示error.php

<?php
    $page = $_GET['page'];
    $pages = array('p_1',
                   'p_2',
                   'p_3',
                   'error');

   if (!empty($page)) {
        if(in_array($page, $pages)) {
                $page .= '.php';
                require_once('../' . $page . ''); 
        }
        else require_once('../error.php');
    }
    else  require_once('../error.php');

?>

是正确的

答案 1 :(得分:1)

我不知道为什么它打开newpage.php而没有看到你的其余代码,但我可以告诉你为什么它没有显示error.php页面

如果$ _GET ['page']“为空”,则代码仅显示error.php(即null,0,'')。 要修复它,您应该尝试以下代码:

<?php
$page = $_GET['page'];
$pages = array('p_1',
               'p_2',
               'p_3',
               'error');

if(!empty($page) && in_array($page, $pages)) {
    $page .= '.php';
    require_once('../' . $page . '');
} else {
    require_once('../error.php');
}

&GT;