W3docs

show_source()

Neste artigo, abordamos a função PHP show_source(): sintaxe, parâmetros, exemplos práticos e riscos de segurança que você deve evitar.

Neste artigo, vamos nos concentrar na função PHP show_source(). Abordaremos sua sintaxe, parâmetros e valor de retorno, mostraremos exemplos funcionais, explicaremos quando utilizá-la e apresentaremos os riscos de segurança que você precisa evitar.

O que é a função show_source()?

A função show_source() lê um arquivo PHP e imprime seu conteúdo no navegador como HTML com destaque de sintaxe — palavras-chave, strings e comentários são envoltos em tags <span> coloridas para facilitar a leitura do código.

show_source() é um alias de highlight_file(). As duas funções são idênticas em todos os aspectos; show_source() existe principalmente por questões de legibilidade. (Não a confunda com highlight_string(), que destaca uma string de código passada diretamente, em vez de um arquivo no disco.)

Sintaxe

show_source(string $filename, bool $return = false): string|bool
ParâmetroDescrição
$filenameCaminho para o arquivo PHP cujo código-fonte você deseja destacar. Obrigatório.
$returnSe true, o código destacado é retornado como string em vez de ser impresso. O padrão é false.

Valor de retorno: quando $return é false, imprime o código destacado e retorna true em caso de sucesso ou false em caso de falha. Quando $return é true, retorna o HTML destacado como string (sem imprimir nada).

Uso básico

Passe o caminho do arquivo que deseja exibir. A saída destacada é escrita diretamente na página:

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

Isso imprime o conteúdo de example.php no navegador, envolvido em tags <code> e <span> coloridas. Como a saída é HTML, ela é destinada a ser visualizada em um navegador, não na linha de comando.

Capturando a saída em vez de imprimi-la

Defina o segundo argumento como true quando quiser o HTML destacado como string — por exemplo, para registrá-lo em log, armazená-lo em cache ou inseri-lo em um template:

<?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";
?>

Nada é enviado ao navegador até que você mesmo faça echo da string capturada.

Quando devo usá-la?

  • Documentação e tutoriais — mostre aos leitores um arquivo de exemplo exatamente como ele aparece no disco, com destaque de sintaxe.
  • Depuração em desenvolvimento — inspecione rapidamente o que um arquivo realmente contém.
  • Visualizadores de trechos de código — combine o modo $return = true com seus próprios templates.

Para apenas ler o conteúdo bruto de um arquivo (sem destaque), use file_get_contents() ou readfile().

Considerações de segurança

show_source() expõe o código-fonte completo de um arquivo, incluindo qualquer lógica, comentários e credenciais que ele contenha. Trate-a como uma ferramenta exclusiva para desenvolvimento.

O maior risco é passar entrada do usuário como nome do arquivo. Se um parâmetro de requisição chegar até show_source(), um invasor pode ler arquivos arbitrários no seu servidor:

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

Para se manter seguro:

  • Nunca passe entrada de usuário não validada como nome do arquivo. Liste os arquivos permitidos em vez de confiar na requisição.
  • Mantenha show_source() fora do ambiente de produção. O destaque de código-fonte pertence a ambientes de desenvolvimento e páginas de documentação, não a um site em produção.
  • Esteja ciente de que o código-fonte destacado pode revelar senhas de banco de dados, chaves de API ou outros segredos codificados diretamente no arquivo.

Resumo

  • show_source() imprime o código-fonte de um arquivo PHP como HTML com destaque de sintaxe.
  • É um alias de highlight_file(); ambas se comportam de forma idêntica.
  • O segundo argumento opcional ($return) retorna o HTML como string em vez de imprimi-lo.
  • Nunca forneça entrada do usuário a ela e mantenha-a fora do ambiente de produção — ela pode vazar todo o seu código-fonte.

Prática

Prática
Em PHP, o que a função show_source() faz?
Em PHP, o que a função show_source() faz?
Was this page helpful?