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

时间:2012-05-21 23:20:48

标签: php

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

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

5 个答案:

答案 0 :(得分:5)

请勿使用include(),阅读文件内容并打印出来(不要忘记逃避)。

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

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

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

有时候,当我们寻找一些非常简单的东西时,我们会忽略这一点。的:○)

答案 3 :(得分:1)

如果您希望能够在浏览器中查看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>

答案 4 :(得分:0)

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

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