Javascript:获取cookie值以记录用户的访问

时间:2017-10-17 22:32:47

标签: javascript

此脚本会跟踪冲浪者访问过页面的次数,并显示此信息的冲浪者。还有按钮允许他/她重置信息。当"重访页面"单击按钮,刷新页面。根据访问次数获取消息并打印出来。当"重置计数器"单击,它将计数器设置为零并刷新页面。我几乎做了编码,但它没有工作。任何人都可以告诉我代码中的错误吗?

代码:

 <!DOCTYPE html>
    <html>
    <head>
        <title>cookie</title>
        <style>

        </style>

    </head>
    <body>
        <div class="myDiv" id="div">
        <p id="txt">   </p> </div>
    <FORM>
        <CENTER>
            <INPUT NAME="update" TYPE="BUTTON" VALUE="Revisit  Page" OnClick="history.go(0)" id="revisit">
            <INPUT NAME="reset" TYPE="BUTTON" VALUE="Reset Counter" OnClick="ResetCounts()" id="reset">
        </CENTER>
    </FORM>

    <script>

        function getCookieVal (offset) {
            var endstr = document.cookie.indexOf (";", offset);
            if (endstr == -1)
                endstr = document.cookie.length;
            return unescape(document.cookie.substring(offset, endstr));
        }
        function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}
        function DisplayInfo() {
            var expdate = new Date();
            var visit;
            expdate.setTime(expdate.getTime() +  (24 * 60 * 60 * 1000 * 365)); 
            if(!(visit = GetCookie("visit"))) 
                visit = 0;
            visit++;
            SetCookie("visit", visit, expdate, "/", null, false);
            var message;
            if(visit == 1) 
                message="         Welcome to my page!";
            if(visit== 2) 
                message="           I see you came back !";
            if(visit == 3) 
                message="               Oh, it's you again!";
            if(visit == 4)
                message="            You must be curious!"; 
            if(visit == 5) 
                message="      You're practically a regular!";
            if(visit == 6) 
                message="              You need a hobby!";
            if(visit == 7)
                message="             Nothing better to do?"; 
            if(visit == 8) 
                message="            Don't you ever sleep?";
            if(visit == 9)
                message="                      Get a life!!!"; 
            if(visit >= 10) 
                message="  Rent is due on the 1st of the month!";

            var txt = document.getElementById("txt").innerHTML =  "Your browser has visited this page " + visit + " time(s)." + message;    
        }
        function ResetCounts() {
            var expdate = new Date();
            expdate.setTime(expdate.getTime() +  (24 * 60 * 60 * 1000 * 365)); 
            visit = 0;
            SetCookie("visit", visit, expdate , "/", null, false);
            history.go(0);
        }

        window.onload=DisplayInfo
    </script>
    </body>
    </html>

1 个答案:

答案 0 :(得分:0)

请尝试使用这两个功能 - 它们可以在我的电子商务网站上使用。

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

另外,请确保您自己的浏览器接受Cookie,并且在您运行测试时不会清除它们。