output_add_rewrite_var

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

output_add_rewrite_varДобавляет значения в обработчик перезаписи URL-адресов

Описание

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

Функция запускает обработчик буфера вывода 'URL-Rewriter', если он не активен, сохраняет значения параметров name и value, и когда буфер сбрасывается, перезаписывает URL-адреса и формы на основе пригодных ini-настроек. Очередные вызовы функции будут сохранять каждую дополнительную пару из имени и значения до тех пор, пока обработчик не отключится.

Когда буфер вывода сбрасывается (вызовом функций ob_flush(), ob_end_flush(), ob_get_flush() или в конце работы скрипта), обработчик 'URL-Rewriter' добавляет в атрибуты HTML-тегов пары из имени и значения как параметры запроса для URL-адресов и скрытые поля на основе значений директив конфигурации url_rewriter.tags и url_rewriter.hosts в формы.

Каждая пара имени и значения, которую добавили в обработчик 'URL-Rewriter', добавится в URL-адреса и (или) формы, даже если это задублирует URL-параметры запроса или элементы с одинаковыми названиями атрибутов.

Замечание: После отключения обработчика 'URL-Rewriter' его невозможно запустить снова.

Внимание

До PHP 8.4.0 хосты для перезаписи задавали через директиву session.trans_sid_hosts, а не url_rewriter.hosts.

Список параметров

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(), работали с общим буфером вывода с поддержкой прозрачного идентификатора сессии. Смотрите описание директивы session.trans_sid_tags.

Примеры

Пример #1 Пример добавления значения в обработчик перезаписи URL-адресов функцией output_add_rewrite_var()

<?php

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

output_add_rewrite_var('var', 'value');

// несколько ссылок
echo '<a href="file.php">ссылка</a>
<a href="http://example.com">ссылка2</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">ссылка</a>
<a href="http://example.com">ссылка2</a>

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

Array
(
    [0] => URL-Rewriter
)

Смотрите также

Добавить

Примечания пользователей 2 notes

up
2
Anonymous
16 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>
To Top