如果存在于数组中}else{


if exists in array } else {

我目前使用以下脚本检查页面是否存在于我的数组中,然后打开它,否则打开我的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.

我哪里做错了?

谢谢

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

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

<?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');
?>

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

你的代码只显示error.php如果$_GET['page'] "为空"(即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');
}

?>