1

如果标题有点混乱,我很抱歉,但这是我的问题:
我需要使用 PHP 回显 .html 文件的源代码。我尝试使用 PHP include(); 虽然文件的扩展名是 .html.txt,但它显示为好像是 . 当我直接访问文件时,例如“example.com/file.html.txt”,它显示为普通的 .txt。
这是我用来显示文件的 PHP 代码:

<div>
<?php
include "../head.php";
$path = $_GET["p"];
?>
<div style="position:absolute; top:90px; padding-left:5px; padding-right:10px;">

<?php
echo "<code>";
include("files/".$path);
echo "</code>";
?>

</div>

我希望我可以理解!:) 在此先感谢您的帮助!

4

5 回答 5

6

不要使用include(),读取文件的内容并打印它们(不要忘记转义)。

在您的情况下$path是用户输入,您应该确保不能访问敏感信息。使用basename($path);确保没有目录遍历是可能的。

<code>
<?php
    // $path = basename($path);
    $html = file_get_contents("files/".$path);
    echo htmlspecialchars($html);
?>
</code>
于 2012-05-21T23:25:28.603 回答
4

如果要在 html 文件中输出 HTML 标签,请使用htmlspecialchars()转义特殊字符。

于 2012-05-21T23:22:36.937 回答
4

我建议将其包装在textarea中。简单快捷。

echo "<textarea>";
include "/filename.txt";
echo "</textarea>";

有时,当我们在寻找非常简单的东西时,我们会忽略显而易见的东西。:o)

于 2012-05-21T23:32:18.333 回答
2

如果您希望能够在浏览器中查看 html 源代码,最好的方法是通过函数 htmlentities() 或类似函数运行它。棘手的部分是将包含的文件内容放入一个字符串中,以便您可以做到这一点。为此,我们使用 ob_start() 和 ob_get_clean()。这些基本上启动了一个输出缓冲区,然后获取输出缓冲区的内容,以便您可以处理它并回显它。

<div>
<?php
include "../head.php";
$path = $_GET["p"];
?>
<div style="position:absolute; top:90px; padding-left:5px; padding-right:10px;">

<?php
echo "<code>";
ob_start();
include("files/".$path);
echo htmlentities(ob_get_clean());
echo "</code>";
?>

</div>
于 2012-05-21T23:25:34.820 回答
1

包含不安全。如果您的文件有 PHP 代码,它将被执行。你应该使用这个:

echo htmlspecialchars(file_get_contents('yourfile.html'));
于 2012-05-21T23:26:48.057 回答