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

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

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
 
Зачем нужны имя сервера и каталог? Очень просто: дело в том, что сценарию пере- 

даются только те Cookies, у которых параметры с именем сервера и каталога 
совпа- 
дают соответственно с хостом и каталогом сценария (ну, на самом деле каталог не 

должен совпадать полностью, он может являться подкаталогом того, который создан 

для хранения Cookies). Так что совершенно невозможно получить доступ к "чужим" 
Cookies — браузер просто не будет посылать их серверу. Это и понятно: 
представьте 
себе, сколько ненужной информации передавалось бы сценарию, если бы все было не 

так (особенно если пользователь довольно активно посещает различные серверы, 
ко- 
торые не прочь поставить ему свой набор Cookies). Кроме того, дополнительные 
све- 
дения предоставляются в целях защиты информации от несанкционированного дос- 
тупа — ведь в каком-то Cookie может храниться, скажем, важный пароль (как часто 

делается при авторизации), а он должен быть доступен только одному 
определенному 
хосту. 

Глава 3. CGI изнутри 69 
Установка Cookie 
Мы подошли к вопросу: как же сценарий может установить Cookie в браузере 
пользо- 
вателя? Ведь он работает "на одном конце провода", а пользователь — на другом. 
Решение довольно логично: команда установки Cookie — это просто один из 
заголов- 
ков ответа, передаваемых сервером браузеру. То есть, перед тем как выводить 
Content-type, мы можем указать некоторые команды для установки Cookie. Вы- 
глядит такая команда следующим образом (разумеется, как и всякий заголовок, 
запи- 
сывается она в одну строку): 
Set-Cookie: name=value; expires=дата; domain=имя_хоста; path=путь; secure 
Существует и другой подход активизировать Cookie — при помощи HTML-тэга 
. Соответственно, как только браузер увидит такой тэг, он займется 
обработ- 
кой Cookie. Формат тэга такой: 
 
Мы можем видеть, что даже названия параметров в этих двух способах одинаковы. 
Какой из них выбрать — решать вам: если все заголовки уже выведены к тому мо- 
менту, когда вам потребовалось установить Cookie, используйте тэг . В 
про- 
тивном случае лучше взять на вооружение заголовки, т. к. они не видны 
пользовате- 
лю, а чем пользователь меньше видит при просмотре исходного текста страницы в 
браузере — тем лучше нам, программистам. 
Возможно, вы спросите, нахмурив брови: "Что же, с точки зрения программиста 
хороший пользователь — слепой пользователь?" Тогда я отвечу: "Что вы, нет 
и еще раз нет! Такой пользователь хорош лишь для дизайнера, для програм- 
миста же желателен пользователь безрукий (или, по крайней мере, лишенный 
клавиатуры и мыши)". 
Вот что означают параметры Cookie: 
name 
Вместо этой строки нужно задать имя, закрепленное за Cookie. Имя должно быть 
URL-кодированным текстом, т. е. состоять только из алфавитно-цифровых символов. 

Впрочем, обычно имена для Cookies выбираются именно так, чтобы их URL- 
кодированная форма совпадала с оригиналом. 
value 
Текст, который будет рассматриваться как значение Cookie. Важно отметить, что 
этот 
текст (ровно как и строка названия Cookie) должен быть URL-кодирован. Таким об-

Часть I. Основы Web-программирования 70 
разом, я должен отметить неприятный факт, что придется писать еще и функцию 
URL-кодирования (которая, кстати, раза в 2 сложнее, чем функция для декодирова- 

ния, т. к. требует дополнительного выделения памяти). 
expires 
Необязательная пара expires=дата задает время жизни нашего Cookie. Точнее, 
Cookie самоуничтожится, как только наступит указанная дата. Например, если 
задать 
expires=Friday,31-Dec-99 23:59:59 GMT, то "печенье" будет "жить" только до 
31 декабря 1999 года. Кстати, вот вам и вторая неприятность: хорошо, если мы 
знаем 
наверняка время "смерти" Cookie. А если нам нужно его вычислять на основе 
текуще- 
го времени (например, если мы хотим, чтобы Cookie существовал 10 дней после его 

установки, как в подавляющем большинстве случаев и происходит)? Приде
 
<<-[Весь Текст]
Страница: из 287
 <<-