名称数组=获取正确的文件

时间:2011-10-24 23:10:05

标签: php arrays include

我正在尝试编写文件列表并将其放入数组中。 必须更改调用外部内容的页面上的内容。

我找到了这段代码并试图让它发挥作用。 LINK(最后评论)

$all_pages=array("main","page_two","page_three");    
$page = $_GET['page'];    
if( isset($page) and array_key_exists("$page", $all_pages) ) // added a missing ')'
{
include('subfolder/folder/'.$_GET['$page'].'.html');
}
好吧,这不起作用。 只是无法找到正确的文件。 (内容显示总是空的。)

我(尝试)调用如下文件:

<ul>    
   <li><a href="template.php?main">Main content</a></li>
   <li><a href="template.php?page_two">Second content</a></li>
   <li><a href="template.php?page_three">Third content</a></li>
</ul>

提前致谢!

2 个答案:

答案 0 :(得分:2)

您必须使用in_array()来测试允许的值。 array_key_exists将要求页面名称为数组键。

其次,$_GET["page"]将为空,因为您没有该名称的get参数。你必须调整你的链接:

   <li><a href="template.php?page=main">Main content</a></li>
   <li><a href="template.php?page=page_two">Second content</a></li>
   <li><a href="template.php?page=page_three">Third content</a></li>

(或者使用$_SERVER["QUERY_STRING"]。但可能不想这样做。)

你的第三个问题是:

include('subfolder/folder/'.$_GET['$page'].'.html');
                            ^^^    ^^^

您应该在这里使用$page变量,您已经从$_GET读取了该变量。再次使用该名称作为密钥将不起作用。而你还使用了单引号(双重错误,但幸运的是没有效果)。

所以正确的是:

$all_pages = array("main", "page_two", "page_three");    
$page = $_GET['page'];
if ( in_array($page, $all_pages) )
{
    include('subfolder/folder/'.$page.'.html');
}

答案 1 :(得分:1)

array_key_exists更改为in_array。此外,可以设置变量$ page但是为空,检查以确保它不为if( !empty( $page) && ...等空。