Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
([string $newname]) 
Эта функция устанавливает или возвращает имя группы сессии, которая будет ис- 
пользоваться PHP для хранения зарегистрированных переменных. Если $newname не 
задан, то возвращается текущее имя. Если же этот параметр указан, то имя группы 

будет изменено на $newname, при этом функция вернет предыдущее имя. 
Session_name() лишь сменяет имя текущей группы и сессии, но не создает 
новую сессию и временное хранилище! Это значит, что мы должны в большин- 
стве случаев вызывать session_name(имя_группы) еще до ее инициализа- 
ции — вызова session_start(), в противном случае мы получим совсем не 
то, что ожидали. 
Если функция session_name() не была вызвана до инициализации, PHP будет ис- 
пользовать имя по умолчанию — PHPSESID. 
Кстати говоря, имя группы сессий, устанавливаемое рассматриваемой функ- 
цией, — это как раз имя того самого Cookie, который посылается в браузер 
клиента для его идентификации. Таким образом, пользователь может одно- 
временно активизировать две и более сессий — с точки зрения PHP он будет 

Часть IV. Стандартные функции PHP 350 
менно активизировать две и более сессий — с точки зрения PHP он будет вы- 
глядеть как два ли более различных пользователя. Однако не забывайте, что, 
случайно установив в сценарии Cookie, имя которого совпадает с одним из 
имен группы сессий, вы "затрете" Cookie. 
Вот простой пример применения этой функции. 
 
В текущей сессии Вы открыли эту страницу  раз(а). 
Рекомендую всегда указывать имя группы сессии вручную, не полагаясь на значение 

по умолчанию. За это вам скажут спасибо разработчики других сценариев, когда 
они 
захотят использовать вашу программу вместе со своими. 
Идентификатор сессии 
Мы уже говорили с вами, зачем нужен идентификатор сессии (SID). Фактически, он 
является именем временного хранилища, которое будет использовано для хранения 
данных сессии между запусками сценария. Итак, один SID — одно хранилище. Нет 
SID, нет и хранилища, и наоборот. 
В этом месте очень легко запутаться. В самом деле, как же соотносится 
идентифика- 
тор сессии и имя группы? А вот как: имя — это всего лишь собирательное название 

для нескольких сессий (то есть, для многих SID), запущенных разными пользовате- 

лями. Один и тот же клиент никогда не будет иметь два различных SID в пределах 
одного имени группы. Но его браузер вполне может работать (и часто работает) с 
не- 
сколькими SID, расположенными логически в разных "пространствах имен". 
Итак, все SID уникальны и однозначно определяют сессию на компьютере, выпол- 
няющем сценарий — независимо от имени сессии. Имя же задает "пространство 
имен", в которое будут сгруппированы сессии, запущенные разными пользователями. 

Один клиент может иметь сразу несколько активных пространств имен (то есть не- 
сколько имен групп сессий). 
string session_id([string $sid]) 
Функция возвращает текущий идентификатор сессии SID. Если задан параметр $sid, 
то у активной сессии изменяется идентификатор на $sid. Делать это, вообще 
говоря, 
не рекомендуется. 
Фактически, вызвав session_id() до session_start(), мы можем подключиться 
к любой (в том числе и к "чужой") сессии на сервере, если знаем ее 
идентификатор. 

Глава 25. Управление сессиями 351 
Мы можем также создать сессию с угодным нам идентификатором, при этом автома- 
тически установив его в Cookies пользователя. Но это — не лучшее решение, — 
предпочтительнее переложить всю "грязную работу" на PHP. 
Другие функции 
Здесь мы для полноты картины рассмотрим функции для работы с сессиями, которые 
применяются гораздо реже, чем уже описанные. 
bool session_is_registered(string $name) 
Функция session_is_registered() возвращает значение true, если переменная с 
именем $name был
 
<<-[Весь Текст]
Страница: из 287
 <<-