| |
ены, PHP просто не бу-
дет генерировать константу SID (она будет пустой) и задействует Cookies. Все
вполне логично.
Неявное изменение гиперссылок
Похоже, что вы уже начали думать о том, как же это все-таки неудобно — везде
вставлять участки кода =SID?>, и, пропусти вы их в одном месте, придется
долго
искать ошибку? Что же, законный повод для беспокойства, но, к счастью,
разработ-
чики PHP уберегли нас и от этой напасти.
Вы не поверите, но, если в какой-нибудь гипессылке вы по ошибке пропустите
=SID?>, PHP вставит его за вас автоматически. Причем так, чтобы это никак не
повредило другим параметрам, возможно, уже присутствующим в URL. Если вы в
шоке, то запустите следующий сценарий в браузере, а затем наведите мышь на
гипер-
ссылку и посмотрите в строке состояния, какой адрес имеет ссылка:
Click here!
Click here!
Click here!
Вот адреса этих ссылок с точки зрения браузера:
http://www.somehost.ru/path/to/something.php?PHPSESSID=8114536a920bfb01f
http://www.somehost.ru/path/to/something.html?a=aaa&b=bbb&PHPSESSID=86a20
Глава 25. Управление сессиями 359
http://www.somehost.ru/?PHPSESSID=8114536a920bfb2a
(Я немного урезал идентификаторы сессий, чтобы они уместились на странице этой
книги.) Обратите внимание на второй адрес: он говорит, что идентификатор
коррект-
но вставился в конец обычных параметров страницы. Третий пример заставляет за-
думаться о том, что идентификатор сессии прикрепляется к URL независимо от типа
документа, на который он указывает.
Описанная только что возможность работает лишь в том случае, если в на-
стройках PHP установлен в значение истина параметр
session.use_trans_sid.
Он как раз и включен по умолчанию.
Зачем же тогда нужна константа SID? Да незачем. Это — устаревший прием переда-
чи идентификатора сессии, и я привел его здесь только для того, чтобы
нарисовать
более полную картину, что в действительности происходит, а также показать, на-
сколько иногда PHP может быть услужлив.
Неявное изменение формы
Возможно, прочитав этот заголовок, вы еще более обрадуетесь. Да, PHP умеет не
только изменять гиперссылки, он также и добавляет скрытые поля в формы, которые
формирует сценарий, чтобы передать идентификатор сессии вызываемому документу!
Это ставит последнюю точку над i в вопросе поддержки сессий для пользователей,
которые отключили у себя Cookies.
Напоследок рассмотрим пример сценария, который выводит обыкновенную пустую
форму, и в ней, как по мановению волшебной палочки, появляется дополнительное
скрытое поле с идентификатором сессии.
А вот почти дословно то, что выдается в браузере (Internet Explorer) после
запуска
этого сценария и выбора в меню пункта Просмотр в виде HTML:
Как видим, PHP добавил в форму скрытое поле с нужным именем и значением. Он
также заключил в кавычки значения атрибутов тэга |
|