Второй способ: создание cookie в сценарии JavaScript
Второй способ предполагает использование свойства document.cookie. Это свойство мы упомянули, рассказывая о свойствах и методах объекта document, создаваемого для документа HTML, загруженного в окно браузера.
В общем виде сценарий JavaScript может создать cookie следующим образом:
document.cookie =
“Имя=Значение;
Здесь мы просто записываем в свойство cookie объекта document текстовую строку, определяющую cookie.
Для пересчета текущей даты в формат GMT в сценариях JavaScript можно использовать встроенные функции, о чем мы скоро расскажем.
В качестве примера приведем исходный текст функции addCookie, которую мы будем использовать в своих сценариях для создания cookie:
function addCookie(szName,szValue,dtDaysExpires)
{
var dtExpires = new Date();
var dtExpiryDate = "";
dtExpires.setTime(dtExpires.getTime() +
dtDaysExpires * 24 * 60 * 60 * 1000);
dtExpiryDate = dtExpires.toGMTString();
document.cookie =
szName + "=" + szValue + "; expires=" + dtExpiryDate;
}
Функция addCookie получает три параметра.
Через параметр szName передается имя параметра, хранящегося в cookie. Параметр szValue определяет значение этого параметра cookie. Что же касается последнего параметра с именем dtDaysExpires, то он задает интервал времени по отношению к моменту создания cookie, когда этот cookie необходимо удалить.
Самое сложное в функции addCookie - это определение даты удаления cookie и преобразование этой даты в формат GMT. Данная задача решается следующим образом.
Прежде всего функция addCookie создает объект класса Date с помощью ключевого слова new:
var dtExpires = new Date();
Записанная таким образом в переменную dtExpires дата соответствует моменту вызова функции addCookie.
Далее с помощью метода getTime функция addCookie определяет текущую дату в миллисекундах и прибавляет к результату значение параметра dtDaysExpires, полученное функцией, умноженное на константу (24 * 60 * 60 * 1000):
dtExpires.getTime() + dtDaysExpires * 24 * 60 * 60 * 1000
Константа представляет собой количество часов в сутках, умноженное на количество минут в часе, затем на количество секунд в минуте, и, наконец, на количество миллисекунд в секунде.
Результат вычислений записывается при помощи метода setTime в переменную даты dtExpires. Теперь здесь хранится дата автоматического уничтожения cookie браузером. Осталось лишь преобразовать эту дату в формат GMT.
Такое преобразование нетрудно сделать с помощью специально предназначенного для этого метода toGMTString, возвращающего текстовую строку в нужном нам формате:
dtExpiryDate = dtExpires.toGMTString();
Теперь нам остается только сформировать текстовую строку определения cookie и записать ее в свойство document.cookie:
document.cookie =
szName + "=" + szValue + "; expires=" + dtExpiryDate;
На этом создание cookie завершено.
Теперь, когда в вашем распоряжении есть функция addCookie, создание cookie представляет собой очень простую задачу. Например, в следующей строке мы создаем cookie с именем Count, значением 0, причем через 10 дней браузер автоматически удалит этот cookie:
addCookie("Count","0",10);
При необходимости использования других параметров cookie, таких как path или domain, вы можете немного дополнить текст функции addCookie. С этой задачей вы легко справитесь самостоятельно.