可以在php中包含的文件的名称中使用变量吗?

问题描述:

我想基于从另一页传递的变量包含不同的头文件。该变量是$部分。这里是我的代码:可以在php中包含的文件的名称中使用变量吗?

<?php include("header".$section.".php"); ?> 

我想基于变量$部分包括headerAbout.php或headerMenu.php或者......。但我得到一个错误:

include(header.php) [function.include]: failed to open stream: No such file or directory 

我不知道为什么变量不被连接。有人可以澄清这一点?

+1

当你在'$ section'上做'var_dump'时会发生什么? –

+0

只是把变量的回声,天气它得到价值或不? –

+0

对不起。我发现了这个错误。请参阅下面的评论。 – Brahadeesh

鉴于它没有连接在一起,变量没有定义在你试图在include中使用它的地方。你在哪里设定它的价值?

+0

我发现了这个问题。我直接从firefox预览它,并没有给url变量赋予任何值。因此$ section的变量值没有被设置。如果我给的价值在网址中,它的工作正常。 – Brahadeesh

是的,include language construct只是期望string作为参数值。此字符串值可以来自字符串文字,variable/constant或返回字符串的任何其他表达式(例如函数/方法调用)。

您的错误的原因可能是$section不包含您所期望的值。

请注意,您应该知道,如果您允许用户输入为文件位置的一部分,则可能容易受到path traversal attacks的影响。所以请确保验证值。

+0

谢谢。请参阅我的评论。 – Brahadeesh

它工作正常。其可能$section在当前范围或当前执行中不包含值。

+0

谢谢。请参阅我的评论。 – Brahadeesh