0

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

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

并且我希望能够在另一个文件 ( index.php) 中访问该数组,然后在index.php我需要做的require_once('library.php');. 如果我没有 PHP 标记,则会回显代码。但是,PHP网站上的这条评论暗示,无论是否包含标签,如果包含文件的标题被修改,内容都会被回显。

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

2 回答 2

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显示包含文件没有标签时的回声。

于 2012-05-19T23:42:29.503 回答
0

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

如果您不使用 php 开始标签,则内容也将对仅通过 HTTP 请求文件的用户可见,因此用户可以看到源代码,因为代码实际上并未由 PHP 解释器解析,而是只是作为纯文本回显。

于 2012-05-19T23:43:59.637 回答