Извините, если название немного запутанно, но это моя проблема:
Мне нужно эхо-источник файла .html с помощью PHP. Я пробовал использовать 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()
для htmlspecialchars()
специальных символов.
Я бы предложил обернуть его внутри текстового поля . Просто и быстро.
echo "<textarea>"; include "/filename.txt"; echo "</textarea>";
Иногда, когда мы ищем что-то очень простое, мы упускаем из виду очевидное. : о)
если вы хотите видеть источник 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>
в<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'));