PHP output_reset_rewrite_vars() Funktion
Erfahren Sie, wie PHP's output_reset_rewrite_vars() alle beim URL-Rewriter registrierten Variablen löscht – mit Syntax, Rückgabewerten und Beispielen.
output_reset_rewrite_vars() ist eine eingebaute PHP-Funktion, die alle zuvor beim URL-Rewriter registrierten Variablen löscht. Der URL-Rewriter ist derselbe Mechanismus, den PHP verwendet, um Werte (vor allem die Session-ID, wenn session.use_trans_sid aktiviert ist) über Seitenanfragen hinweg weiterzugeben, indem diese an URLs angehängt und in HTML-Formulare injiziert werden. Diese Funktion gibt Ihnen die volle Kontrolle über diese Liste zurück – sie entfernt alles, was Sie mit output_add_rewrite_var() hinzugefügt haben.
Hinweis: Dies ist eine echte PHP-Kernfunktion aus der Output-Control-Erweiterung. Sie hat nichts mit dem
$_GET-Superglobal oder der WordPress-APIadd_rewrite_var()zu tun – diese sind davon unabhängig.
Was output_reset_rewrite_vars() tut
Wenn Sie output_add_rewrite_var('name', 'value') aufrufen, hängt PHP automatisch name=value an jede relative URL an und fügt ein entsprechendes verstecktes Feld zu jedem Formular im restlichen Seiteninhalt hinzu. Diese Variablen bleiben aktiv, bis die Ausgabe endet.
output_reset_rewrite_vars() stoppt dieses Verhalten sofort, indem die Variablenliste des Rewriters geleert wird. Ausgaben, die nach dem Aufruf erzeugt werden, tragen die umgeschriebenen Variablen nicht mehr; bereits gesendete Ausgaben sind davon nicht betroffen.
Syntax
output_reset_rewrite_vars(): bool- Parameter: keine.
- Rückgabewert:
truebei Erfolg,falsebei Fehler.
Grundlegendes Beispiel
Eine Variable hinzufügen, einige Ausgaben damit erzeugen und dann zurücksetzen, damit der Rest der Seite sauber bleibt:
<?php
// Register a rewrite variable: every relative link/form below gets var=value
output_add_rewrite_var('var', 'value');
echo '<a href="page.php">This link carries the variable</a>';
// Rendered as: <a href="page.php?var=value">...</a>
// Clear all registered rewrite variables
output_reset_rewrite_vars();
echo '<a href="other.php">This link is left untouched</a>';
// Rendered as: <a href="other.php">...</a>Der erste Link wird umgeschrieben, weil die Variable aktiv ist; der zweite nicht, weil output_reset_rewrite_vars() sie entfernt hat.
Wann Sie diese Funktion verwenden würden
- Umschreibung auf einen Seitenbereich begrenzen. Verwenden Sie
output_add_rewrite_var()am Anfang eines Abschnitts undoutput_reset_rewrite_vars()am Ende, damit Links außerhalb dieses Abschnitts sauber bleiben. - Variablensets wechseln. Vor der Registrierung einer anderen Gruppe von Variablen zurücksetzen, um zu vermeiden, dass alte Werte durchsickern.
- Trans-SID lokal deaktivieren. Wenn PHP die Session-ID automatisch an URLs anhängt, verhindert das Zurücksetzen des Rewriters, dass die Session-ID an eine bestimmte Gruppe von Links angehängt wird (zum Beispiel Links, die auf eine externe Domain verweisen).
Das Ergebnis prüfen
Der Rückgabewert zeigt an, ob das Zurücksetzen erfolgreich war:
<?php
output_add_rewrite_var('token', 'abc123');
if (output_reset_rewrite_vars()) {
echo "Rewrite variables were cleared.\n";
} else {
echo "Failed to clear rewrite variables.\n";
}
// Output: Rewrite variables were cleared.Verwandte Funktionen
| Funktion | Zweck |
|---|---|
output_add_rewrite_var() | Registriert eine Variable, die der URL-Rewriter an URLs/Formulare anhängt. |
ob_start() | Startet die Ausgabepufferung, auf der der Rewriter aufbaut. |
ob_get_clean() | Gibt den aktuellen Ausgabepuffer zurück und verwirft ihn. |
Für einen umfassenderen Überblick darüber, wie PHP generierte Ausgaben verwaltet, siehe PHP Output Control. Wenn Ihre Rewrite-Variablen Session-IDs sind, erklärt das Kapitel PHP Sessions, woher diese Werte stammen.
Fazit
output_reset_rewrite_vars() ist das Gegenstück zu output_add_rewrite_var(): Es löscht die Variablenliste des URL-Rewriters, sodass nachfolgende Ausgaben keine automatisch angehängten Werte mehr tragen. Greifen Sie darauf zurück, wenn Sie URL-Rewriting innerhalb einer einzelnen Anfrage eingrenzen oder rückgängig machen möchten.