| |
.
Не стоит увлекаться вызовами GetAllHeaders(): часто интересующую информа-
цию (такую, например, как название браузера) можно получить и через переменные
Глава 21. Работа с WWW 291
окружения. Последний способ гораздо более переносим, поэтому всеми силами ста-
райтесь предпочесть его.
Работа с Cookies
Я не буду здесь особо вдаваться в подробности работы с Cookies (хотя, положа
руку
на сердце, вдаваться тут особо не во что), тем более, что этот материал мы с
вами уже
рассматривали в части I книги. Повторю лишь основное.
Немного теории
Итак, Cookie — это именованная порция (довольно небольшая) информации, которая
может сохраняться прямо в настройках браузера пользователя между сеансами. При-
чина, по которой применяются Cookies — большое количество посетителей вашего
сервера, а также нежелание иметь нечто подобное базе данных для хранения инфор-
мации о каждом посетителе. Поиск в такой базе может очень и очень затянуться
(на-
пример, при цифре миллион гостей в день он будет отнимать львиную долю време-
ни), и, в то же время, нет никакого смысла централизованно хранить столь
отрывочные сведения. Использование Cookies фактически перекладывает задачу на
плечи браузера, решая одним махом как проблему быстродействия, так и проблему
большого объема базы данных с информацией о пользователе.
Самый распространенный пример применения Cookies — логин и пароль пользовате-
ля, использующего некоторые защищенные ресурсы вашего сайта. Эти данные, ко-
нечно же, между открытиями страниц хранятся в Cookies, для того чтобы
пользовате-
лю не пришлось их каждый раз набирать вручную заново.
У каждого Cookie есть определенное время жизни, по истечение которого он
автома-
тически уничтожается. Существуют также Cookies, которые "живут" только в
течение
текущего сеанса работы с браузером (это могут быть, например, имя и пароль,
вве-
денные при авторизации), или же идентификатор сессии (см. главу 25).
Каждый Cookie устанавливается сценарием на сервере. Для этого он должен послать
браузеру специальный заголовок вида:
Set-cookie: данные
Однако в PHP этот процесс скрыт за функцией SetCookie(), которую мы сейчас
рассмотрим, так что нам нет смысла вдаваться в детали.
Пожалуй, из теории осталось только добавить, что сценарии с других серверов, а
также расположенные в другом каталоге, не будут извещены о "чужих" Cookies. Для
них их как словно и нет. И это правильно с точки зрения безопасности — кто
знает,
насколько секретна может быть информация, сохраненная в Cookies? А вдруг там
хранится номер кредитной карточки или пароль доступа к Пентагону?..
Часть IV. Стандартные функции PHP 292
Установка Cookie
Перейдем теперь к тому, как устанавливать Cookies. Так как Cookie фактически
пред-
ставляет собой обычный заголовок, сделать это можно только перед первой
командой
вывода в сценарии.
int setcookie(string $name [,string $value] [,int $expire]
[,string $path] [,string $domain] [,book $secure])
Вызов SetCookie() определяет новый Cookie, который тут же посылается браузеру
вместе с остальными заголовками. Все аргументы, кроме имени, необязательны.
Если
задан только параметр $name (имя Cookie), то Cookie с указанным именем у
пользо-
вателя удаляется. Вы можете пропускать аргументы, которые не хотите задавать,
пус-
тыми строками "". Аргументы $expire и $secure, как мы видим, не могут быть
представле
|
|