PHP 显示源代码而不是.html文件


PHP Show Source Code Instead of .html File

如果标题有点混乱,我很抱歉,但这是我的问题:
我需要使用 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>

我希望我是可以理解的!:)提前感谢您的帮助!

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

在您的情况下$path是用户输入,您应该确保无法访问任何敏感信息。使用 basename($path); 可确保无法进行目录遍历。

<code>
<?php
    // $path = basename($path);
    $html = file_get_contents("files/".$path);
    echo htmlspecialchars($html);
?>
</code>

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

我建议将其包装在文本区域中。简单快捷。

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

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

如果你想能够在浏览器中看到HTML源代码,最好的方法是通过函数htmlentities()或类似来运行它。 棘手的部分是将 include 的文件内容放入字符串中,以便您可以执行此操作。 为此,我们使用 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>

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

echo htmlspecialchars(file_get_contents('yourfile.html'));