2012-12-28 104 views
0

我正在尝试做一个全面的思考和全面的系统,以包括我今天启动的一个小型爱好项目的页面。文件错误包括

这是我的时刻代码:

$page = get_uri(1); 
if(!isset($page)){ $page = "Home"; } 
$pages = array(
     "" => "home.php", 
     "Home" => "home.php", 
     "Product" => "product.php", 
     "category" => "category.php" 
); 
if(in_array($page, $pages) && file_exists(PAGE_DIR.$pages[$page])){ 
    include(PAGE_DIR.$pages[$page]); 
} else { 
    echo 'Uh oh. Four Oh Four, we failed to find the page you are looking for. :(<br />'; 
} 

PAGE_DIR被定义为= "/pages/"这是我主持我的网页文件。我创建了Home.php只是为了证明我的理论,而get_uri(1)现在是一个空值,因为我试图让理论起作用。我确定问题在于file_exists,但无法解决问题出在哪里。

回答

2

in_array检查数组,而不是密钥,这是你想要的。改为使用if (isset($pages[$page]) && ...)

根据您的环境,文件名可能区分大小写。如果在代码中使用小写文件名,请将该文件创建为home.php。

+0

非常感谢,我没有意识到in_array没有通过键搜索,但现在我知道了,我真的很高兴能够接近“亲”:) – Hultin

0

使用array_key_exists,而不是in_array()

现在你的代码看起来就像这样。

$page = get_uri(1); 
if(!isset($page)){ $page = "Home"; } 
$pages = array(
     "" => "home.php", 
     "Home" => "home.php", 
     "Product" => "product.php", 
     "category" => "category.php" 
); 
if(array_key_exists($page, $pages) && file_exists(PAGE_DIR.$pages[$page])){ 
    include(PAGE_DIR.$pages[$page]); 
} else { 
    echo 'Uh oh. Four Oh Four, we failed to find the page you are looking for. :(<br />'; 
}