PHP Velho Oeste 2024

output_add_rewrite_var

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

output_add_rewrite_varURL リライタの値を追加する

説明

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

この関数は、'URL-Rewriter' 出力バッファハンドラをアクティブでない場合に開始します。 その上で、namevalue パラメータを保存し、バッファがフラッシュされた際には URL とフォームをini設定に基づいて書き換えます。 後にこの関数をコールした場合は、ハンドラがオフになるまで name/value のペアをすべて保存します。

(ob_flush(), ob_end_flush(), ob_get_flush() がコールされたり、 スクリプトが終了する際) 出力バッファがフラッシュされると、 'URL-Rewriter' ハンドラが name/value のペアを HTML タグの属性にある URL のクエリパラメータに追加します。 そして url_rewriter.tagsurl_rewriter.hosts 設定ディレクティブの値に基づいて hidden フィールドをの値をフォームに追加します。

'URL-Rewriter' のハンドラに追加された name/value ペアは、たとえ URL のクエリパラメータが重複したり、 同じ名前の属性をもつ要素が発生したとしても、 それぞれが URL やフォームに追加されます。

注意: 'URL-Rewriter' ハンドラがオフにされると、 再び値を保存することはできません。

パラメータ

name

変数名。

value

変数の値。

戻り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
7.1.0 PHP 7.1.0 以降では、専用の出力バッファを用いるようになりました。 url_rewriter.tags はただ関数の出力にだけ使われるようになり、 url_rewriter.hosts が追加されました。 PHP 7.1.0 より前のバージョンでは、 output_add_rewrite_var() で設定したリライト変数は、 透過的セッションID出力バッファと同じ出力バッファを共有していました。 (session.trans_sid_tags を参照ください)

例1 output_add_rewrite_var() の例

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

output_add_rewrite_var('var', 'value');

// リンク
echo '<a href="file.php">link</a>
<a href="http://example.com">link2</a>'
;

// フォーム
echo '<form action="script.php" method="post">
<input type="text" name="var2" />
</form>'
;

print_r(ob_list_handlers());
?>

上の例の出力は以下となります。

<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
)

参考

add a note add a note

User Contributed Notes 3 notes

up
1
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
1
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
-6
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