На самом деле обновление файла cookie немного отличается от простой замены файла cookie тем, что новое значение, которое мы хотим поместить в файл cookie, некоторым образом зависит от того, существует ли файл cookie уже, и если да, то от чего это содержит. Это означает, что нам нужно прочитать существующий файл cookie, прежде чем мы сможем написать для него замену.
Следует отметить, что когда мы читаем файл cookie, мы имеем нет способа узнать, когда истекает срок действия существующего файла cookie, ограничен ли он определенной папкой или доступен во всем домене. Вам необходимо установить новый период хранения, когда вы заменяете файл cookie, и вам необходимо отслеживать, какую область вы хотите, чтобы cookie имел на ваших страницах, чтобы каждый раз применять один и тот же домен или вариант пути. Единственное, что вы действительно можете прочитать при обновлении, а не просто при замене файла cookie, – это фактическое значение данных, хранящихся в файле cookie.
В этом Например, мы собираемся использовать файл cookie с именем «accesscount» для подсчета количества раз, когда наш посетитель заходил на нашу страницу, когда между посещениями прошло не более семи дней. Если между посещениями пройдет более семи дней, срок действия cookie истечет, и при следующем посещении начнется отсчет с нуля. Мы используем функции allCookies () и writeCookie () из предыдущих примеров, поэтому единственный фрагмент нового кода, который нам нужен для фактического обновления, находится в последних двух строках.
var cookie;
allCookies = function () {
var cr, ck, cv;
cr = []; if (document.cookie! = ”) {
ck = document.cookie.split (‘;’);
for (var i = ck.length – 1; i> = 0; i–) {
cv = ck.split (‘=’);
cr [ck [0]] = ck [1];
}
}
return cr;
};
writeCookie = function (cname, cvalue, days, opt) {
var dt, expires, option;
if (дни) {
dt = new Date ();
dt.setTime (dt.getTime () + (дней * 24 * 60 * 60 * 1000));
expires = “; expires =” + dt.toGMTString ();
} else expires = ”;
if (opt) {
if (‘/’ = substr ( opt, 0,1)) option = “; path =” + opt;
else option = “; domain =” + opt;
} else option = ”;
document.cookie = cname + “=” + cvalue + expires + option;
}
cookie = allCookies ();
if (cookie.accesscount! = null ) writeCookie (‘mycookie’, cookie.accesscount + 1,7);
else writeCookie (‘mycookie’, 1,7);