Особенности механизма сеансов

Ранее уже отмечалось, что работа механизма сеансов определяется тем, включена ли поддержка cookie на стороне клиента, a также значением директивы session.use_trans_sid в файле php.ini. Рассмотрим подробнее:

· Поддержка cookie включена. В этом случае глобальной переменной $PHPSESSID присваивается значение идентификатора сеанса; а cookie используется для передачи значения $PHPSESSID между сценариями (страницами).

Поддержка cookie отключена. Интерпретатор PHP создает константу, значением которой является "PHPSESSID=идентификатор_сеанса". Использование идентификатора сеанса определяется значением директивы session.use_trans_sid. По умолчанию это значением равно 0 (директива отключена). Чтобы включить данную директиву, необходимо в файле php.ini изменить соответствующую строку: session.use_trans_sid=1. При включенной директиве можно создавать сценарии, не зависящие от настройки браузера по применению cookie. Рассмотрим случаи различных значений директивы session.use_trans_sid:

· session.use_trans_sid =1. Идентификатор сеанса при отключенной поддержке cookie пересылается посредством элементов, в которых указан URL-адрес. При переходе на другую страницу с помощью ссылки, функции header() или формы с методом GET идентификатор сеанса добавляется к URL-адресу и виден в адресной строке браузера, что иногда нежелательно. Следует иметь в виду, что идентификатор сеанса добавляется к URL-адресам, соответствующим одному и тому же сайту. Если в URL-адресе содержится имя сервера, то к такому URL-адресу идентификатор сеанса не будет добавлен. Например, при использовании ссылки

<а href="nextpage.html> идентификатор будет добавлен к адресу, а при использовании ссылки <а href=http://myserver.ru/nextpage.php - нет:

Однако можно использовать передачу идентификатора сеанса в скрытых полях формы с методом POST, при котором идентификатор сеанса не добавляется к URL-адресу:

<input type=hidden name='PHPSESSID' value='$PHPSESSID'>

• session.use_trans_sid =0. Идентификатор сеанса при отключенной
поддержке cookie не пересылается. При необходимости разработчик приложения делает это самостоятельно, используя константу SID. Поскольку эта константа имеет значение вида "PHPSESSID=идентификатор_сеанса", то можно просто добавить ее к URL-адресу, например,

<а href="mainpage.php?<?php echo SID?>">Главная страница</а>

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: