W3docs

show_source()

In diesem Artikel befassen wir uns mit der PHP-Funktion show_source(): Syntax, Parameter, Rückgabewert und Sicherheitsrisiken.

In diesem Artikel befassen wir uns mit der PHP-Funktion show_source(). Wir behandeln ihre Syntax, Parameter und den Rückgabewert, zeigen funktionierende Beispiele, erklären, wann man sie verwendet, und gehen auf die Sicherheitsrisiken ein, die es zu vermeiden gilt.

Was ist die show_source()-Funktion?

Die Funktion show_source() liest eine PHP-Datei und gibt ihren Inhalt als HTML mit Syntaxhervorhebung im Browser aus — Schlüsselwörter, Zeichenketten und Kommentare werden in farbige <span>-Tags eingeschlossen, sodass der Code leicht lesbar ist.

show_source() ist ein Alias von highlight_file(). Die beiden Funktionen sind in jeder Hinsicht identisch; show_source() existiert hauptsächlich aus Gründen der Lesbarkeit. (Verwechseln Sie sie nicht mit highlight_string(), die eine Zeichenkette mit Code hervorhebt, die direkt übergeben wird, anstatt einer Datei auf der Festplatte.)

Syntax

show_source(string $filename, bool $return = false): string|bool
ParameterBeschreibung
$filenamePfad zur PHP-Datei, deren Quellcode hervorgehoben werden soll. Erforderlich.
$returnWenn true, wird der hervorgehobene Code als Zeichenkette zurückgegeben, anstatt ausgegeben zu werden. Standardwert ist false.

Rückgabewert: Wenn $return false ist, wird der hervorgehobene Code ausgegeben und bei Erfolg true zurückgegeben, bei Fehler false. Wenn $return true ist, wird das hervorgehobene HTML als Zeichenkette zurückgegeben (und nichts ausgegeben).

Grundlegende Verwendung

Übergeben Sie den Pfad der Datei, die Sie anzeigen möchten. Die hervorgehobene Ausgabe wird direkt auf der Seite ausgegeben:

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

Dies gibt den Inhalt von example.php im Browser aus, eingeschlossen in <code>- und farbige <span>-Tags. Da die Ausgabe HTML ist, ist sie dazu gedacht, im Browser betrachtet zu werden, nicht in der Kommandozeile.

Ausgabe erfassen statt drucken

Setzen Sie das zweite Argument auf true, wenn Sie das hervorgehobene HTML als Zeichenkette möchten — zum Beispiel um es zu protokollieren, zu cachen oder in ein Template einzufügen:

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

Es wird nichts an den Browser gesendet, bis Sie die erfasste Zeichenkette selbst mit echo ausgeben.

Wann würde ich sie verwenden?

  • Dokumentation und Tutorials — zeigen Sie Lesern eine Beispieldatei genau so, wie sie auf der Festplatte erscheint, mit Hervorhebung.
  • Debugging in der Entwicklung — überprüfen Sie schnell, was eine Datei tatsächlich enthält.
  • Code-Snippet-Viewer — kombinieren Sie den Modus $return = true mit Ihrem eigenen Templating.

Um nur den rohen Inhalt einer Datei zu lesen (ohne Hervorhebung), verwenden Sie stattdessen file_get_contents() oder readfile().

Sicherheitsüberlegungen

show_source() legt den vollständigen Quellcode einer Datei offen, einschließlich jeglicher Logik, Kommentare und enthaltener Zugangsdaten. Betrachten Sie es als ein reines Entwicklungswerkzeug.

Das größte Risiko besteht darin, Benutzereingaben als Dateinamen zu übergeben. Wenn ein Anfrageparameter in show_source() landet, kann ein Angreifer beliebige Dateien auf Ihrem Server lesen:

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

Um sicher zu bleiben:

  • Übergeben Sie niemals ungeprüfte Benutzereingaben als Dateinamen. Legen Sie stattdessen eine Whitelist der erlaubten Dateien fest, anstatt der Anfrage zu vertrauen.
  • Halten Sie show_source() aus der Produktionsumgebung heraus. Quellcode-Hervorhebung gehört in Entwicklungsumgebungen und Dokumentationsseiten, nicht auf eine Live-Website.
  • Beachten Sie, dass hervorgehobener Quellcode Datenbankpasswörter, API-Schlüssel oder andere im Code fest eingetragene Geheimnisse preisgeben kann.

Zusammenfassung

  • show_source() gibt den Quellcode einer PHP-Datei als syntaxhervorgehobenes HTML aus.
  • Es ist ein Alias von highlight_file(); beide verhalten sich identisch.
  • Das optionale zweite Argument ($return) gibt das HTML als Zeichenkette zurück, anstatt es auszugeben.
  • Übergeben Sie niemals Benutzereingaben daran und halten Sie es aus der Produktion heraus — es kann Ihren gesamten Quellcode preisgeben.

Übung

Übung
Was macht die Funktion show_source() in PHP?
Was macht die Funktion show_source() in PHP?
Was this page helpful?