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

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

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
ены, PHP просто не бу- 
дет генерировать константу SID (она будет пустой) и задействует Cookies. Все 
вполне логично. 
Неявное изменение гиперссылок 
Похоже, что вы уже начали думать о том, как же это все-таки неудобно — везде 
вставлять участки кода , и, пропусти вы их в одном месте, придется 
долго 
искать ошибку? Что же, законный повод для беспокойства, но, к счастью, 
разработ- 
чики PHP уберегли нас и от этой напасти. 
Вы не поверите, но, если в какой-нибудь гипессылке вы по ошибке пропустите 
, 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 добавил в форму скрытое поле с нужным именем и значением. Он также заключил в кавычки значения атрибутов тэга
(правда, я сам не ожи- дал увидеть такой эффект, когда опробовал этот сценарий). Что же, кавычки так ка- вычки, хуже от этого не будет…. Часть IV. Стандартные функции PHP 360 Так использовать Cookies в сессиях или нет? Ответ — да, использовать. Для этого мы должны быть уверены, что в настройках PHP параметр session.use_cookies установлен в значение true (именно оно при- сваивается ему по умолчанию при установке PHP). Что же делать, если пользователь отключил у себя Cookies? Да ничего. Так как PHP автоматически добавляет идентификатор сессии ко всем ссылкам и формам, которые он встретит, сценарии все равно будут продолжать работать. Вот только их URL (да и всех других документов тоже) немного удлинятся, но, думаю, это не так уж и критич- но. Главное, что сессии будут работать. Только не забудьте удостовериться, что в конфигурационном файле PHP включена опция session.use_trans_sid. Итак, разработчики PHP добились, чтобы сценарию, рассчитанному на сессии, было все равно, включе
 
<<-[Весь Текст]
Страница: из 287
 <<-