Start · Sprachen · PHP · Referenz · output_add_rewrite_var

output_add_rewrite_var

Funktion

Fügt einen Namen-Wert-Paar zum URL-Rewriter hinzu, der URLs und Formulare im Ausgabepuffer automatisch um diesen Parameter ergänzt.

seit PHP 4.3.0 Kategorie: io

Signatur

output_add_rewrite_var(string $name, string $value): bool

Beschreibung

output_add_rewrite_var() registriert ein Name-Wert-Paar im internen URL-Rewriter von PHP. Sobald der Output-Buffering-Handler ob_start('ob_gzhandler') oder der Session-URL-Rewriter aktiv ist, werden alle relativen URLs sowie versteckte Formularfelder im generierten HTML automatisch um die registrierten Parameter ergänzt.

Die Funktion ist vor allem nützlich, wenn Sitzungs-IDs oder andere persistente Parameter ohne Cookies übertragen werden sollen – z. B. in Umgebungen, in denen Cookies deaktiviert sind. Sie arbeitet eng mit der PHP-Konfigurationsdirektive url_rewriter.tags zusammen, die bestimmt, welche HTML-Tags und Attribute umgeschrieben werden.

Intern nutzt output_add_rewrite_var() denselben Mechanismus wie der transparente Session-URL-Rewriter (session.use_trans_sid). Die registrierten Variablen werden bei der Ausgabe als Query-Parameter an URLs angehängt und als <input type="hidden">-Felder in Formulare eingefügt.

Mit output_reset_rewrite_vars() können alle zuvor registrierten Variablen wieder entfernt werden. Es empfiehlt sich, nur sicherheitlich unkritische Daten über diesen Mechanismus zu übertragen, da die Parameter in der URL sichtbar sind.

Parameter

Name Typ Default Beschreibung
$name Pflicht string Der Name des URL-Parameters, der an alle umzuschreibenden URLs und Formulare angehängt wird.
$value Pflicht string Der Wert des URL-Parameters. Wird automatisch URL-kodiert, wenn er in Query-Strings eingefügt wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Variable erfolgreich registriert wurde, andernfalls false.

Beispiele

Session-ID in URLs einbetten ohne Cookies

<?php
// Output-Buffering mit URL-Rewriting aktivieren
ob_start();

// Session starten und ID zum Rewriter hinzufügen
session_start();
output_add_rewrite_var('PHPSESSID', session_id());

// Jetzt werden alle Links automatisch umgeschrieben:
?>
<html>
<body>
  <a href="seite.php">Zur nächsten Seite</a>
  <form action="verarbeitung.php" method="post">
    <input type="text" name="eingabe" />
    <input type="submit" value="Absenden" />
  </form>
</body>
</html>
<?php
// Ausgabe wird z. B. so transformiert:
// <a href="seite.php?PHPSESSID=abc123">Zur nächsten Seite</a>
// <form ...><input type="hidden" name="PHPSESSID" value="abc123" /> ...
ob_end_flush();

Mehrere Parameter registrieren und zurücksetzen

<?php
ob_start();

// Mehrere Rewrite-Variablen registrieren
output_add_rewrite_var('lang', 'de');
output_add_rewrite_var('theme', 'dark');

echo '<a href="index.php">Startseite</a>';
// Ausgabe enthält: <a href="index.php?lang=de&theme=dark">Startseite</a>

ob_end_flush();

// Alle registrierten Variablen wieder entfernen
output_reset_rewrite_vars();

ob_start();
echo '<a href="index.php">Startseite</a>';
// Ausgabe enthält nun keine zusätzlichen Parameter mehr
ob_end_flush();

// Wichtig · Fallstricke

Sicherheitshinweis: URL-Parameter sind für alle Benutzer sichtbar – in der Adressleiste des Browsers, in Server-Logs und im Browser-Verlauf. Sensitive Daten (z. B. Authentifizierungstoken) sollten niemals über diesen Mechanismus übertragen werden.

Damit der URL-Rewriter tatsächlich greift, muss Output-Buffering aktiv sein (entweder über ob_start() im Code oder über output_buffering in der php.ini). Ohne aktiven Ausgabepuffer hat die Funktion keine Wirkung auf die erzeugte Ausgabe.

Die betroffenen HTML-Tags werden durch die INI-Direktive url_rewriter.tags (PHP < 7.1) bzw. session.trans_sid_tags (PHP ≥ 7.1) gesteuert. Standardmäßig werden <a href>, <area href>, <frame src> und <form> umgeschrieben.