На этом шаге мы рассмотрим общие сведения о cookie.
Для хранения небольших объемов информации на диске компьютера пользователя в браузере предусмотрен так называемый механизм cookie. Обычно он используется для хранения имени пользователя и пароля, который вводится в поле формы защищенного веб-сайта, а также информации о предыдущем посещении сайта. Например, можно сохранить на диске дату последнего посещения сайта данным пользователем. При загрузке сайта эта дата сравнивается с некоторой датой, установленной автором сайта в качестве даты обновления. Если вторая (авторская) дата более поздняя, чем первая, то на веб-странице появляется соответствующая отметка. Разумеется, сравнение дат и вывод на страницу отметки производится с помощью сценария. А вот еще один пример: сценарий проверяет, а посетил ли некто сайт. Если это произошло, то на страницу выводится персональное сообщение.
По существу, cookie - это единственный способ сохранения данных на диске пользователя, безопасный для него. Как известно, веб-браузеры препятствуют свободному обращению к папкам и файлам на компьютере пользователя. Однако следует помнить, что многие пользователи не любят cookie-записи и всячески их истребляют.
Записи cookie браузер Internet Explorer сохраняет в отдельных текстовых файлах, расположенных в папке Cookies. Имя такого файла образуется на основе имени пользователя и домена того сервера, на котором создавался cookie-файл. Netscape Navigator 4 для Windows создает просто один файл cookie.txt. Вообще говоря, структура данных в cookie-файлах для различных браузеров не столь существенна, поскольку, во-первых, не рекомендуется открывать и изменять эти файлы в текстовых редакторах, а во-вторых, браузеры Internet Explorer и Netscape Navigator используют одинаковый синтаксис чтения и записи cookie-данных, основанный на использовании свойства document.cookie.
Итак, данные в cookie-файлах организованы в виде записей. Каждую такую запись можно представить себе в виде строки, содержащей следующие элементы:
Зависимость записей от домена обеспечивает безопасность хранения так называемых невосстанавливаемых паролей (пар вида имя_пользователя-пароль), поскольку запись, созданную сервером одного домена, не может прочитать сервер с другим доменом.
Срок хранения используется браузером для автоматического удаления просроченных записей, чтобы предотвратить чрезмерное разрастание объема cookie-файлов. Впрочем, Internet Explorer и Netscape Navigator ограничили объем cookie-файлов 20 записями на каждый домен.
Для записи данных в cookie-файл с помощью JavaScript используется выражение присвоения строки, содержащей cookie-данные, свойству document.cookie. При этом важно соблюдать формат строки:
document.cookie = "соокiеName=данные [; expiгеs=строка_времени_СМТ] [; path=nyть] [; domain=домен] [; secure]"
Здесь квадратные скобки указывают, что заключенное в них содержимое не является обязательным (может быть опущено).
Рассмотрим элементы cookie-строки.
document.cookie = "User_Name=Bacя";
При выполнении этого выражения браузер пытается найти cookie-запись с таким именем. Если он не находит ее в текущем домене, то создает ее автоматически. Если запись с таким именем уже существует, то браузер заменяет ее данные новыми. Данные в этом элементе cookie-записи не должны содержать точек с запятыми, запятых и пробелов. Чтобы заменить пробелы соответствующими символами (%20), строка с данными предварительно обрабатывается функцией escape().
var expdate = new Date(); //Создаем объект даты var monthFromNow = expdate.getTime() + (30*24*60*60*1000); expdate.setTime(monthFromNow); //Устанавливаем значение даты
После этого полученную дату следует привести к строковому формату GMT:
document.cookie ="User_Name=Bacя; expires =" + expdate.toGMTString();
Cookie-запись можно удалить и до истечения заданного срока хранения, установив новый срок, заведомо уже прошедший:
expdate = Thu, 01-Jan-70 00:00:01 GMT
Отсутствие срока хранения означает для браузера, что данная cookie-запись является временной и не записывается в файл.
На следующем шаге мы рассмотрим чтение и запись данных cookie.