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âmetro | Descrição |
|---|---|
$filename | Caminho para o arquivo PHP cujo código-fonte você deseja destacar. Obrigatório. |
$return | Se 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"><?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 = truecom 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.