我正在尝试编写文件列表并将其放入数组中。 必须更改调用外部内容的页面上的内容。
我找到了这段代码并试图让它发挥作用。 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>
提前致谢!
答案 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) && ...
等空。