W3docs

show_source()

En este artículo nos centramos en la función show_source() de PHP: sintaxis, parámetros, valor de retorno, ejemplos y consideraciones de seguridad.

En este artículo nos centraremos en la función show_source() de PHP. Cubriremos su sintaxis, parámetros y valor de retorno, mostraremos ejemplos funcionales, explicaremos cuándo utilizarla y repasaremos los riesgos de seguridad que debes evitar.

¿Qué es la función show_source()?

La función show_source() lee un archivo PHP e imprime su contenido en el navegador como HTML con resaltado de sintaxis: las palabras clave, cadenas y comentarios se envuelven en etiquetas <span> de colores para que el código sea fácil de leer.

show_source() es un alias de highlight_file(). Ambas funciones son idénticas en todos los aspectos; show_source() existe principalmente por legibilidad. (No la confundas con highlight_string(), que resalta una cadena de código que pasas directamente en lugar de un archivo en disco.)

Sintaxis

show_source(string $filename, bool $return = false): string|bool
ParámetroDescripción
$filenameRuta al archivo PHP cuyo código fuente deseas resaltar. Obligatorio.
$returnSi es true, el código resaltado se devuelve como string en lugar de imprimirse. Por defecto es false.

Valor de retorno: cuando $return es false, imprime el código resaltado y devuelve true si tiene éxito o false si falla. Cuando $return es true, devuelve el HTML resaltado como string (y no imprime nada).

Uso básico

Pasa la ruta del archivo que deseas mostrar. La salida resaltada se escribe directamente en la página:

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

Esto imprime el contenido de example.php en el navegador, envuelto en etiquetas <code> y <span> de colores. Como la salida es HTML, está pensada para verse en un navegador, no en la línea de comandos.

Capturar la salida en lugar de imprimirla

Establece el segundo argumento en true cuando quieras el HTML resaltado como string — por ejemplo para registrarlo, almacenarlo en caché o insertarlo en una plantilla:

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

No se envía nada al navegador hasta que tú mismo hagas echo de la cadena capturada.

¿Cuándo usarla?

  • Documentación y tutoriales — muestra a los lectores un archivo de ejemplo tal como aparece en disco, con resaltado.
  • Depuración en desarrollo — inspecciona rápidamente el contenido real de un archivo.
  • Visores de fragmentos de código — combina el modo $return = true con tus propias plantillas.

Para simplemente leer el contenido sin procesar de un archivo (sin resaltado), usa file_get_contents() o readfile().

Consideraciones de seguridad

show_source() expone el código fuente completo de un archivo, incluida cualquier lógica, comentarios y credenciales que contenga. Trátala como una herramienta exclusiva para desarrollo.

El mayor riesgo es pasar entrada del usuario como nombre de archivo. Si un parámetro de la petición acaba en show_source(), un atacante puede leer archivos arbitrarios de tu servidor:

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

Para mantenerte seguro:

  • Nunca pases entrada de usuario sin validar como nombre de archivo. Usa una lista blanca de archivos permitidos en lugar de confiar en la petición.
  • Mantén show_source() fuera de producción. El resaltado de código pertenece a entornos de desarrollo y páginas de documentación, no a un sitio en producción.
  • Ten en cuenta que el código fuente resaltado puede revelar contraseñas de bases de datos, claves de API u otros secretos codificados en el archivo.

Resumen

  • show_source() imprime el código fuente de un archivo PHP como HTML con resaltado de sintaxis.
  • Es un alias de highlight_file(); ambas se comportan de manera idéntica.
  • El segundo argumento opcional ($return) devuelve el HTML como string en lugar de imprimirlo.
  • Nunca introduzcas entrada de usuario y mantenla fuera de producción — puede filtrar todo tu código fuente.

Práctica

Práctica
En PHP, ¿qué hace la función show_source()?
En PHP, ¿qué hace la función show_source()?
Was this page helpful?