PHPerKaigi 2024

output_add_rewrite_var

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

output_add_rewrite_varFügt Werte zum URL-Rewriter hinzu

Beschreibung

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

Diese Funktion startet den "URL-Rewriter"-Ausgabepuffer-Handler, wenn dieser nicht aktiv ist, speichert die Parameter name und value und schreibt die URLs und Formulare basierend auf den entsprechenden INI-Einstellungen neu, wenn der Puffer geleert wird. Nachfolgende Aufrufe dieser Funktion speichern alle zusätzlichen Name/Wert-Paare, bis der Handler beendet wird.

Wenn der Ausgabepuffer geleert wird (durch Aufruf von ob_flush(), ob_end_flush(), ob_get_flush() oder am Ende des Skripts), fügt der "URL-Rewriter"-Handler die Name/Wert-Paare entsprechend den Werten der Konfigurationsanweisungen url_rewriter.tags und url_rewriter.hosts als Abfrageparameter zu URLs in Attributen von HTML-Tags und als versteckte Felder zu Formularen hinzu.

Jedes Name/Wert-Paar, das dem "URL-Rewriter"-Handler hinzugefügt wird, wird zu den URLs und/oder Formularen hinzugefügt, auch wenn dies zu doppelten URL-Abfrageparametern oder Elementen mit denselben Namensattributen führt.

Hinweis: Wenn der "URL-Rewriter"-Handler deaktiviert wird, kann er nicht mehr gestartet werden.

Parameter-Liste

name

Der Variablenname.

value

Der Variablenwert.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
7.1.0 Seit PHP 7.1.0 verwendet die Funktion einen eigenen Ausgabepuffer; url_rewriter.tags wird nun nur noch für die Ausgabefunktionen verwendet und die Direktive url_rewriter.hosts wurde hinzugefügt. Vor PHP 7.1.0 teilten sich die Rewrite-Variablen, die mit output_add_rewrite_var() gesetzt wurden, einen Ausgabepuffer mit der transparenten Session-ID-Unterstützung (siehe session.trans_sid_tags).

Beispiele

Beispiel #1 output_add_rewrite_var()-Beispiel

<?php
ini_set
('url_rewriter.tags', 'a=href,form=');

output_add_rewrite_var('var', 'value');

// ein paar Links
echo '<a href="file.php">link</a>
<a href="http://example.com">link2</a>'
;

// ein Formular
echo '<form action="script.php" method="post">
<input type="text" name="var2" />
</form>'
;

print_r(ob_list_handlers());
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

<a href="file.php?var=value">link</a>
<a href="http://example.com">link2</a>

<form action="script.php" method="post">
<input type="hidden" name="var" value="value" />
<input type="text" name="var2" />
</form>

Array
(
    [0] => URL-Rewriter
)

Siehe auch

add a note

User Contributed Notes 3 notes

up
2
Anonymous
15 years ago
For a completely valid XHTML document you have to set the arg_separator, use this before you use output-add-rewrite-var:

<?php
ini_set
('arg_separator.input', '&');
ini_set('arg_separator.output', '&');
?>
up
2
Niko
16 years ago
This function also adds a parameter to <input type="image"> fields!

Example:
This code:

<?
output_add_rewrite_var ('var','value');
echo '<form action="" method="post">
<input type="image" src="image.jpg" alt="go">
</form>';
?>

will output something like this:

<form action="" method="post">
<input type="hidden" name="var" value="value">
<input type="image" src="image.jpg?var=value" alt="go">
</form>
up
-7
Bruce
16 years ago
Just to clarify...

session.use_trans_sid does NOT need to be enabled in order for output_add_rewrite_var() to work.
To Top