W3docs

show_source()

В этой статье рассматривается функция PHP show_source(): синтаксис, параметры, примеры использования и вопросы безопасности.

В этой статье мы подробно рассмотрим функцию PHP show_source(). Мы разберём её синтаксис, параметры и возвращаемое значение, покажем рабочие примеры, объясним, когда её применять, и расскажем о рисках безопасности, которых следует избегать.

Что такое функция show_source()?

Функция show_source() читает PHP-файл и выводит его содержимое в браузер в виде HTML с подсветкой синтаксиса — ключевые слова, строки и комментарии оборачиваются в цветные теги <span>, что делает код удобным для чтения.

show_source() является псевдонимом highlight_file(). Обе функции полностью идентичны; show_source() существует главным образом для улучшения читаемости кода. (Не путайте её с highlight_string(), которая подсвечивает строку кода, переданную непосредственно, а не файл на диске.)

Синтаксис

show_source(string $filename, bool $return = false): string|bool
ПараметрОписание
$filenameПуть к PHP-файлу, исходный код которого нужно подсветить. Обязательный.
$returnЕсли true, подсвеченный код возвращается в виде строки вместо вывода на экран. По умолчанию false.

Возвращаемое значение: когда $return равен false, функция выводит подсвеченный код и возвращает true в случае успеха или false в случае ошибки. Когда $return равен true, функция возвращает подсвеченный HTML в виде строки (и ничего не выводит).

Базовое использование

Передайте путь к файлу, который хотите отобразить. Подсвеченный вывод записывается непосредственно на страницу:

<?php
$file = 'example.php';
show_source($file);
?>

Это выводит содержимое файла example.php в браузер, обёрнутое в теги <code> и цветные теги <span>. Поскольку вывод представляет собой HTML, он предназначен для просмотра в браузере, а не в командной строке.

Захват вывода вместо его печати

Установите второй аргумент в true, когда вам нужен подсвеченный HTML в виде строки — например, для его записи в журнал, кэширования или вставки в шаблон:

<?php
$highlighted = show_source('example.php', true);

// $highlighted now holds the HTML markup, e.g.:
// <code><span style="color: #0000BB">&lt;?php ... </span></code>
echo strlen($highlighted) . " bytes of HTML\n";
?>

Ничего не отправляется в браузер до тех пор, пока вы сами не выведете захваченную строку с помощью echo.

Когда его использовать?

  • Документация и обучающие материалы — показывайте читателям пример файла именно в том виде, в котором он хранится на диске, с подсветкой.
  • Отладка в процессе разработки — быстро проверьте, что действительно содержится в файле.
  • Просмотрщики фрагментов кода — объедините режим $return = true с вашим собственным шаблонизатором.

Для простого чтения содержимого файла без подсветки используйте file_get_contents() или readfile().

Соображения безопасности

show_source() открывает полный исходный код файла, включая любую логику, комментарии и учётные данные. Считайте её инструментом исключительно для среды разработки.

Главный риск — передача пользовательского ввода в качестве имени файла. Если параметр запроса попадает в show_source(), злоумышленник может прочитать произвольные файлы на вашем сервере:

<?php
// DANGEROUS — never do this
show_source($_GET['file']);   // ?file=../config/database.php
?>

Чтобы оставаться в безопасности:

  • Никогда не передавайте непроверенный пользовательский ввод в качестве имени файла. Используйте белый список разрешённых файлов вместо доверия запросу.
  • Не используйте show_source() в продакшне. Подсветка исходного кода уместна в средах разработки и на страницах документации, но не на рабочем сайте.
  • Помните, что подсвеченный исходный код может раскрыть пароли к базам данных, ключи API или другие секретные данные, жёстко закодированные в файле.

Итоги

  • show_source() выводит исходный код PHP-файла в виде HTML с подсветкой синтаксиса.
  • Является псевдонимом highlight_file(); обе функции ведут себя одинаково.
  • Необязательный второй аргумент ($return) возвращает HTML в виде строки вместо его вывода на экран.
  • Никогда не передавайте в неё пользовательский ввод и не используйте в продакшне — она может раскрыть весь ваш исходный код.

Практика

Практика
Что делает функция show_source() в PHP?
Что делает функция show_source() в PHP?
Was this page helpful?