Start · Sprachen · PHP · Referenz · output_reset_rewrite_vars

output_reset_rewrite_vars

Funktion

Setzt alle zuvor mit <code>output_add_rewrite_var()</code> registrierten URL-Rewriter-Variablen zurück und entfernt sie vollständig.

seit PHP 5.3.0 Kategorie: io

Signatur

output_reset_rewrite_vars(): bool

Beschreibung

output_reset_rewrite_vars() löscht alle URL-Rewriter-Variablen, die zuvor über output_add_rewrite_var() hinzugefügt wurden. Der URL-Rewriter ist ein Output-Handler, der automatisch bestimmte Name-Wert-Paare als GET-Parameter an relative URLs im HTML-Ausgabestream anhängt – beispielsweise um Session-IDs transparent weiterzugeben, wenn Cookies nicht verfügbar sind.

Nachdem output_reset_rewrite_vars() aufgerufen wurde, werden keine weiteren Variablen mehr an URLs angehängt, bis erneut Variablen über output_add_rewrite_var() registriert werden. Die Funktion wirkt sich jedoch nur auf die manuell hinzugefügten Variablen aus – Session-bezogene Rewrite-Variablen (z. B. aus session_start() mit transparenter Session-Verwaltung) werden durch die PHP-Konfiguration session.use_trans_sid gesteuert und bleiben davon unberührt.

Diese Funktion ist besonders nützlich, wenn man innerhalb eines Skripts verschiedene Abschnitte der Ausgabe mit unterschiedlichen Sätzen von URL-Parametern erzeugen möchte: Man setzt die bestehenden Variablen zurück und registriert neue, bevor der nächste Ausgabeblock gerendert wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false im Fehlerfall (z. B. wenn der URL-Rewriter-Output-Handler nicht aktiv ist).

Beispiele

Rewrite-Variablen hinzufügen und anschließend zurücksetzen

<?php
// URL-Rewriter aktivieren und Variable registrieren
output_add_rewrite_var('token', 'abc123');
output_add_rewrite_var('lang', 'de');

// Ausgabe: URLs werden um ?token=abc123&lang=de erweitert
echo '<a href="seite.php">Seite</a>'; // => <a href="seite.php?token=abc123&lang=de">Seite</a>

// Alle Rewrite-Variablen zurücksetzen
output_reset_rewrite_vars();

// Ausgabe: URLs werden nicht mehr verändert
echo '<a href="seite.php">Seite ohne Parameter</a>'; // => <a href="seite.php">Seite ohne Parameter</a>
?>
<a href="seite.php?token=abc123&lang=de">Seite</a><a href="seite.php">Seite ohne Parameter</a>

Variablen für verschiedene Seitenabschnitte wechseln

<?php
// Erster Abschnitt: Benutzer-spezifische Parameter
output_add_rewrite_var('user_id', '42');
echo '<a href="profil.php">Mein Profil</a>';

// Zurücksetzen und neue Parameter für nächsten Abschnitt setzen
output_reset_rewrite_vars();
output_add_rewrite_var('section', 'news');
echo '<a href="inhalt.php">Neuigkeiten</a>';
?>
<a href="profil.php?user_id=42">Mein Profil</a><a href="inhalt.php?section=news">Neuigkeiten</a>

// Wichtig · Fallstricke

Voraussetzung: Damit output_reset_rewrite_vars() und output_add_rewrite_var() wirken, muss der URL-Rewriter als Output-Handler aktiv sein. Dies erfordert, dass output_buffering in der php.ini aktiviert oder manuell mit ob_start('ob_tidyhandler') bzw. dem entsprechenden Rewriter-Handler gestartet wurde. Ohne aktiven Output-Handler schlägt die Funktion fehl und gibt false zurück.

Sicherheitshinweis: Das transparente Weiterleiten von Session-IDs über URLs (URL-Rewriting) ist sicherheitskritisch, da Session-IDs in Server-Logs, Browser-Historien und Referrer-Headern sichtbar werden können. Bevorzugen Sie wo immer möglich Cookie-basierte Sessions (session.use_only_cookies = 1).

Abgrenzung: Diese Funktion beeinflusst nicht das durch session.use_trans_sid gesteuerte Session-ID-Rewriting. Zum Deaktivieren von Trans-SID muss die entsprechende PHP-Konfiguration geändert werden.