Функции Язык программирования PHP

session_register

(PHP 4)

session_register - регистрирует одну или более переменных в текущей сессии.

Описание

bool session_register (mixed name [, mixed ...])

session_register() принимает переменное количество аргументов, любой из которых может быть строкой с именем переменной или массивом, состоящим из имён переменных или других массивов. Для каждого имени session_register() регистрирует глобальную переменную с этим именем в текущей сессии.

Внимание!

Это регистрирует глобальную переменную. Если вы хотите зарегистрировать переменную сессии внутри функции, вы должны сделать её глобальной с помощью global() или использовать массивы сессии, как указано ниже.

Внимание!

Если вы используете $_SESSION (или $HTTP_SESSION_VARS), не применяйте session_register(), session_is_registered() и session_unregister().

Эта функция возвращает TRUE, когда все переменные успешно зарегистрированы в сессии.

Если session_start() не вызывалась до вызова данной функции, будет сделан неявный вызов session_start() без параметров.

Вы можете также создать переменную сессии, просто установив соответствующего члена массива $_SESSION или $HTTP_SESSION_VARS (PHP < 4.1.0).
$barney = "A big purple dinosaur."; session_register("barney"); $_SESSION["zim"] 
= "An invader from another planet."; # Старый способ - использование $HTTP_SESSION_VARS 
$HTTP_SESSION_VARS["spongebob"] = "He's got square pants.";

Примечание: в настоящее время невозможно зарегистрировать переменные ресурсов в сессии. Например, вы не можете создать соединение с БД и сохранить id соединения как переменную сессии и ожидать, что соединение останется правильным при следующем восстановлении сессии. PHP-функции, возвращающие ресурс, идентифицируются как имеющие return-тип resource в своих определениях функций. Список функций, возвращающих ресурсы, находится в приложении Типы ресурсов.

Если используется $_SESSION (или $HTTP_SESSION_VARS for PHP 4.0.6 or less), присвойте переменную массиву $_SESSION. То есть: $_SESSION['var'] = 'ABC';

См. также session_is_registered() и session_unregister().


Назад Оглавление Вперёд
session_readonly Вверх session_save_path

Повторение

По умолчанию квантификаторы являются "жадными", то есть они совпадают максимально возможное количество раз (до максимально допустимого количества раз), не вызывая неудачи выполнения остальной части патэрна. Классический пример, когда это создаёт проблемы - попытка найти совпадения в комментарии C-программ. Комментарии появляются между символами /* и */, а внутри могут появляться отдельные символы * и /. Попытка найти совпадение с C-комментариями, применив патэрн

/\*.*\*/

к строке

/* первый комментарий */ не комментарий /* второй комментарий */

терпит неудачу, поскольку происходит совпадение с целой строкой из-за жадности элемента .*.

Однако, если после квантификатора идёт знак вопроса, он перестает быть жадным и совпадает минимально возможное количество раз, поэтому патэрн

/\*.*?\*/

верно выполняется с C-комментариями. Значение различных других квантификаторов не изменится, только предпочтительное количество совпадений. Не путайте это использование знака вопроса с его использованием в качестве собственно квантификатора. Поскольку он может использоваться двояко, они иногда может появляться удвоенным:

\d??\d

что совпадает с одной цифрой, по преимуществу, но может совпадать и с двумя, если это единственный способ совпадения оставшейся части патэрна.

Если установлена опция PCRE_UNGREEDY (отсутствующая в Perl), то квантификаторы не жадничают по умолчанию, но отдельные могут быть жадными, если после них стоит знак вопроса. Другими словами, знак вопроса инвертирует поведение по умолчанию.