通过include()插入代码回应内容

时间:2012-05-19 23:36:30

标签: php

我对include()(以及所有相关的)函数的行为感到有点困惑。如果我有一个文件library.php,其中包含一些代码(在我的例子中,是一个数组):

<?php
$exampleArray = array(
    "Item1" => "Item 1 description",
    "Item2" => "Item 2 description"
);
?>

我希望能够在另一个文件(index.php)中访问该数组,然后在index.php我需要执行require_once('library.php');。如果我没有PHP标记,则回显代码。但是,this comment on the PHP site表示,无论是否包含标记,如果包含文件的标题被修改,内容都将被回显。

  1. 这是对的吗?如果我将要包含的文件更改为library.txt,但仍然包含PHP标记,则内容不会被回显(尽管在两种情况下我都意识到内容类型几乎肯定是text/plain)< / LI>
  2. 评论还说“向世界上的每个人展示信息只需要一个错误的角色。” - 他指的是哪个错误的角色?

2 个答案:

答案 0 :(得分:2)

那么为什么不将它与<?php标签保持一致?到目前为止,我已经测试过,没有标签的任何内容都不会被解析为PHP。 IIRC,PHP标记中的任何内容都会被PHP解析,因此您需要PHP的这些标记来解析所包含文件中的内容。

<?php
require_once("test.txt");
echo $exampleArray["Item1"];
?>

没有<?php标签返回

$exampleArray = array( "Item1" => "Item 1 description", "Item2" => "Item 2 description" );

如果我使用require_once("test.php");,则在文件中没有<?php标记仍会向我提供未解析的内容。

所以你需要标签才能让它发挥作用。

http://meowman.sytes.net/so/incfile/tag.phphttp://meowman.sytes.net/so/incfile/test.php显示包含文件包含标记时的回声。

http://meowman.sytes.net/so/incfile/notag.phphttp://meowman.sytes.net/so/incfile/testno.php显示包含文件没有标记时的回声。

答案 1 :(得分:0)

始终 - 始终是 - 使用要包含的PHP文件中的开始标记。 (虽然不一定需要关闭标签)。

如果你不使用php开放标签,那些只是通过HTTP请求文件的用户也可以看到内容,因此用户可以看到源代码,因为代码实际上并没有被PHP解释器,但只是作为纯文本回显。