繁体   English   中英

获取最后的Cookie过期

[英]Getting Last Cookie Expiration

    cookie_name = "Counter_Cookie";

    function doCookie() {

        if(document.cookie) {
            index = document.cookie.indexOf(cookie_name);
        } 

        else {
            index = -1;
            alert("Welcome the site! Please don't forget to bookmark this page!");  
        }

        var expires = new Date();
        expires.setFullYear(expires.getFullYear() + 1);

        if (index == -1) {
            document.cookie = cookie_name + "=1; expires=" + expires.toUTCString();
        } 

        else {
            countbegin = (document.cookie.indexOf("=", index) + 1);
            countend = document.cookie.indexOf(";", index);
            if (countend == -1) {
                countend = document.cookie.length;
            }

            count = eval(document.cookie.substring(countbegin, countend)) + 1;

            document.cookie=cookie_name+"="+count+"; expires=" + expires.toUTCString();
        }

        document.write("<p>You have been to my site "+getTimes()+".</p>");
    }


    function getTimes() {

        if(document.cookie) {
            index = document.cookie.indexOf(cookie_name);
            if (index != -1) {
            countbegin = (document.cookie.indexOf("=", index) + 1);
            countend = document.cookie.indexOf(";", index);
                if (countend == -1) {
                    countend = document.cookie.length;
                }
                count = document.cookie.substring(countbegin, countend);
                if (count == 1) {
                    return (count+" time");
                } 
                else {
                    return (count+" times");
                }
            }
        }
        return ("0 times");

    }

我想知道如何获取Cookie的最后失效日期,以显示该人最后一次访问该网站的时间。 我假设我需要一个数组,但是,我似乎无法找出如何用我编写的代码来做到这一点。

微软表示:“浏览器负责管理cookie,cookie的过期时间和日期可帮助浏览器管理cookie的存储。因此,尽管您可以读取cookie的名称和值,但无法读取cookie的过期日期。当浏览器向服务器发送cookie信息时,浏览器不包含到期信息。” http://msdn.microsoft.com/zh-CN/library/ms178194(v=vs.100).aspx

因此,您可以将带有分隔符的expire时间戳记附加到cookie的值中: count + '|' + expires.getTime() count + '|' + expires.getTime()

然后在getTimes()解析时间:

data = document.cookie.substring(countbegin, countend).split('|');
count = data[0];
expirationDate = new Date();
expirationDate.setTime(data[1]);

整个代码:

cookie_name = "Counter_Cookie";

function doCookie() {

    if(document.cookie) {
        index = document.cookie.indexOf(cookie_name);
    } 

    else {
        index = -1;
        alert("Welcome the site! Please don't forget to bookmark this page!");  
    }

    var expires = new Date();
    expires.setFullYear(expires.getFullYear() + 1);

    if (index == -1) {
        document.cookie = cookie_name + "=1|" + expires.getTime() + "; expires=" + expires.toUTCString();
    } 

    else {
        countbegin = (document.cookie.indexOf("=", index) + 1);
        countend = document.cookie.indexOf(";", index);
        if (countend == -1) {
            countend = document.cookie.length;
        }

        count = eval(document.cookie.substring(countbegin, countend)) + 1;

        document.cookie=cookie_name+"="+count+"|" + expires.getTime() + "; expires=" + expires.toUTCString();
    }

    document.write("<p>You have been to my site "+getTimes()+".</p>");
}


function getTimes() {

    if(document.cookie) {
        index = document.cookie.indexOf(cookie_name);
        if (index != -1) {
        countbegin = (document.cookie.indexOf("=", index) + 1);
        countend = document.cookie.indexOf(";", index);
            if (countend == -1) {
                countend = document.cookie.length;
            }
            data = document.cookie.substring(countbegin, countend).split('|');
            count = data[0];
            date = new Date();
            date.setTime(data[1]);
            if (count == 1) {
                message = count+" time";
            } 
            else {
                message = count+" times";
            }

            return message + ", last expire: " + date.toUTCString();
        }
    }
    return ("0 times");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM