如果标题有点令人困惑,我很抱歉,但这是我的问题:
我需要使用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>
我希望我能理解! :)提前感谢您的帮助!
答案 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'));