W3docs

show_source()

In questo articolo ci concentreremo sulla funzione PHP show_source(), con panoramica, funzionamento ed esempi pratici d'uso.

In questo articolo ci concentreremo sulla funzione PHP show_source(). Ne esamineremo la sintassi, i parametri e il valore restituito, mostreremo esempi funzionanti, spiegheremo quando utilizzarla e analizzeremo i rischi di sicurezza da evitare.

Cos'è la funzione show_source()?

La funzione show_source() legge un file PHP e ne stampa il contenuto nel browser come HTML con evidenziazione della sintassi — parole chiave, stringhe e commenti vengono racchiusi in tag <span> colorati in modo da rendere il codice facile da leggere.

show_source() è un alias di highlight_file(). Le due funzioni sono identiche in ogni aspetto; show_source() esiste principalmente per maggiore leggibilità. (Non bisogna confonderla con highlight_string(), che evidenzia una stringa di codice passata direttamente, anziché un file su disco.)

Sintassi

show_source(string $filename, bool $return = false): string|bool
ParametroDescrizione
$filenamePercorso del file PHP di cui si vuole evidenziare il sorgente. Obbligatorio.
$returnSe true, il codice evidenziato viene restituito come stringa invece di essere stampato. Il valore predefinito è false.

Valore restituito: quando $return è false, stampa il codice evidenziato e restituisce true in caso di successo o false in caso di errore. Quando $return è true, restituisce l'HTML evidenziato come stringa (senza stampare nulla).

Utilizzo di base

Passa il percorso del file da visualizzare. L'output evidenziato viene scritto direttamente nella pagina:

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

Questo stampa il contenuto di example.php nel browser, racchiuso in tag <code> e tag <span> colorati. Poiché l'output è HTML, è pensato per essere visualizzato in un browser, non da riga di comando.

Catturare l'output invece di stamparlo

Imposta il secondo argomento a true quando vuoi l'HTML evidenziato come stringa — ad esempio per registrarlo, memorizzarlo nella cache o inserirlo in un 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";
?>

Nulla viene inviato al browser finché non esegui tu stesso l'echo della stringa catturata.

Quando usarla?

  • Documentazione e tutorial — mostra ai lettori un file di esempio esattamente come appare su disco, con evidenziazione.
  • Debug in sviluppo — ispeziona rapidamente il contenuto effettivo di un file.
  • Visualizzatori di snippet di codice — combina la modalità $return = true con il tuo sistema di template.

Per leggere semplicemente il contenuto grezzo di un file (senza evidenziazione), usa invece file_get_contents() o readfile().

Considerazioni sulla sicurezza

show_source() espone il codice sorgente completo di un file, inclusa qualsiasi logica, commento e credenziale in esso contenuta. Trattala come uno strumento esclusivamente per lo sviluppo.

Il rischio maggiore è passare input dell'utente come nome del file. Se un parametro della richiesta finisce in show_source(), un attaccante può leggere file arbitrari sul tuo server:

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

Per restare al sicuro:

  • Non passare mai input utente non validato come nome del file. Usa una lista bianca dei file consentiti invece di fidarti della richiesta.
  • Tieni show_source() fuori dalla produzione. L'evidenziazione del sorgente appartiene agli ambienti di sviluppo e alle pagine di documentazione, non a un sito live.
  • Tieni presente che il sorgente evidenziato potrebbe rivelare password di database, chiavi API o altri segreti codificati direttamente nel file.
  • show_source() stampa il codice sorgente di un file PHP come HTML con sintassi evidenziata.
  • È un alias di highlight_file(); entrambe si comportano in modo identico.
  • Il secondo argomento opzionale ($return) restituisce l'HTML come stringa invece di stamparlo.
  • Non passare mai input utente alla funzione e tienila fuori dalla produzione — può esporre l'intero codice sorgente.

Esercitazione

Pratica
In PHP, cosa fa la funzione show_source()?
In PHP, cosa fa la funzione show_source()?
Was this page helpful?