| |
зарегистрирована в сессии, иначе возвращается false.
bool session_unregister(struing $name)
Эта функция отменяет регистрацию для переменной с именем $name для текущей
сессии. Иными словами, при завершении сценария все будет выглядеть так, словно
переменная с именем $name и не была никогда зарегистрирована. Возвращает true,
если все прошло успешно, и false — в противном случае.
После вызова функции session_unregister() глобальная переменная, ко-
торая была "аннулирована", не уничтожается, а сохраняет свое значение.
void session_unset()
Функция session_unset(), в отличие от session_unregister(), не только отме-
няет регистрацию переменных (кстати говоря, всех переменных сессии, а не
какой-то
одной), но и уничтожает глобальные переменные, которые были зарегистрированы в
сессии.
string session_save_path([string $path])
Эта функция возвращает имя каталога, в котором будут помещаться файлы — вре-
менные хранилища данных сессии. В случае, если указан параметр, как обычно, ак-
тивное имя каталога будет переустановлено на $path. При этом функция вернет
пре-
дыдущий каталог.
К сожалению, функции, которая бы возвращала список всех зарегистрированных в
сессии переменных, почему-то нет. Во всяком случае, в PHP версии 4.0.3.
Установка обработчиков сессии
До сих пор мы с вами пользовались стандартными обработчиками сессии, которые
PHP использовал каждый раз, когда нужно было сохранить или загрузить данные из
временного хранилища. Возможно, они вас не устроят — например, вы захотите хра-
Часть IV. Стандартные функции PHP 352
нить переменные сессии в базе данных или еще где-то. В этом случае достаточно
бу-
дет переопределить обработчики своими собственными функциями, и вот как оно
делается.
Обзор обработчиков
Всего существует 6 функций, связанных с сессиями, которые PHP вызывает в тот
или
иной момент работы механизма обработки сессий. Им передаются различные пара-
метры, необходимые для работы. Сейчас я перечислю все эти функции вместе с их
описаниями.
bool handler_open(string $save_path, string $session_name)
Функция вызывается, когда вызывается session_start(). Обработчик должен
взять на себя всю работу, связанную с открытием базы данных для группы сессий с
именем $session_name. В параметре $save_path передается то, что было указано
при вызове session_save_path() или же путь к файлам-хранилищам данных сес-
сий по умолчанию. Возможно, если вы используете базу данных, этот параметр
будет
бесполезным.
bool handler_close()
Этот обработчик вызывается, когда данные сессии уже записаны во временное хра-
нилище и его нужно закрыть.
string handler_read(string $sid)
Вызов обработчика происходит, когда нужно прочитать данные сессии с идентифика-
тором $sid из временного хранилища. Функция должна возвращать данные сессии в
специальном формате, который выглядит так:
имя1=значение1;имя2=значение2;имя3=значение3;...;
Здесь имяN задает имя очередной переменной, зарегистрированной в сессии, а
значениеN — результат вызова функции Serialize() для значения этой перемен-
ной. Например, запись может иметь следующий вид:
foo|i:1;count|i:10;
Она говорит о том, что из временного хранилища были прочитаны две целые пере-
менные, первая из которых равна 1, а вторая — 10.
string handler_write(string $sid, string $data)
Этот обработчик предназначен для записи данных сессии с идентификатором $sid во
временное хранилище — например, открытое ранее обработчиком handler_open().
Параметр $data задается в точно таком же формате, который был описан выше.
Фактически, чаще всего действия этой функции сводятся к записи в базу данных
строки $data без каких-либо ее изменений.
bool handler_destroy(string $sid)
Глава 25. Управление сессиями 353
Обработчик вызывается, когда сессия с идентификатором $sid должна быть уничто-
жена.
bool handler_gc(int $maxlifetime)
Данный обработчик — особенный. Он вызывается каждый раз при завершении рабо-
ты сценария. Если пользователь окончательно "покинул" сервер, значит, данные
сес-
сии во временном хранилище можно уничтожить. Этим и должна заниматься функ-
ция handler_gc(). Ей передается в параметрах то время (в секундах), по
прошествии которого PHP принимает решение о необходимости "почистить перыш-
ки", или "собрать мусор" (garbage collection) — т. е., это максимальное время
сущест-
вования сессии.
Как же должна работать рассматриваемая функция? Очень просто. Например, е
|
|