[ASP.NET] Cookie建立讀取

  • 6722
  • 0
  • 2013-07-23

[ASP.NET] Cookie建立讀取

Cookie係將資訊儲存在Client端的瀏覽器

在code-behind建立Cookie

    protected void btnCreate1Cookie_Click(object sender, EventArgs e)
    {
        //設定單值
        HttpCookie myhc = new HttpCookie("demo");
        myhc.Value = Server.UrlEncode("Demo Test");

        //指定 Cookie 的有效日期,過了有效日期 Cookie 就不會再儲存;不指定這個參數,有效日期就是使用者退出瀏覽器時
        myhc.Expires = DateTime.Now.AddDays(1);

        //指定可以存取該 Cookie 的路徑;不指定這個參數,預設該 Cookie 的網頁所在的路徑
        myhc.Path = "/";

        //指定可以存取該 Cookie 的網域;不指定這個參數,預設該 Cookie 的網頁所在的網域
        myhc.Domain = "";

        //指定 Cookie 只可以傳送給 HTTPS 伺服器
        myhc.Secure = false;

        Response.Cookies.Add(myhc);
    }

    //建立多值Cookie
    protected void btnCreate9Cookie_Click(object sender, EventArgs e)
    {
        HttpCookie myhc = new HttpCookie("demo2");
        //設定多值
        myhc.Values.Add("1st", Server.UrlEncode("Mutiple Test 1st key value"));
        myhc.Values.Add("2nd",Server.UrlEncode("Mutiple Test 2nd key value"));
        myhc.Expires = DateTime.Now.AddDays(1);
        myhc.Path = "/";
        Response.Cookies.Add(myhc);
    }

在code-behind讀取Cookie,承接上述的建立

    //顯示讀取單值資料
    protected void btnShow1Cookie_Click(object sender, EventArgs e)
    {
        //先把資料清空
        showmsg.InnerHtml = "";

        HttpCookie myhc = Request.Cookies["demo"];
        if (myhc != null)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("取得單值Cookie的Value的值:");
            sb.Append(Server.UrlDecode(myhc.Value));
            showmsg.InnerHtml = sb.ToString();

            //cookie設定過期,讓資料刪除
            myhc.Expires = DateTime.Now.AddDays(-1);
            Response.Cookies.Add(myhc);
        }
    }

    //讀取多值Cookie
    protected void btnShow9Cookie_Click(object sender, EventArgs e)
    {
        showmsg.InnerHtml = "";
        HttpCookie myhc = Request.Cookies["demo2"];
        if (myhc != null)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("<p>取得多值Cookie的Value的值:</p>");
            sb.Append("<p>key = 1st的值:");
            sb.Append(Server.UrlDecode(myhc.Values["1st"]) + "</p>");
            sb.Append("<p>key = 2nd的值:");
            sb.Append(Server.UrlDecode(myhc.Values["2nd"]) + "</p>");
            showmsg.InnerHtml = sb.ToString();

            //cookie設定過期,讓資料刪除
            myhc.Expires = DateTime.Now.AddDays(-1);
            Response.Cookies.Add(myhc);
        }
    }

使用JavaScript建立與讀取

        //建立cookie
        function btnjsCreateCookie_onclick() {
            //$.cookie("jsdemo", "JavaScript Create Cookie", { expires: 1, path: '/' });
            var name = " jsdemo";
            var value = escape("JavaScript Create Cookie");
            var date = new Date();
            date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
            document.cookie = name + "=" + value + expires + "; path=/";
        }

        //讀取cookie
        function btnjsShowCreateCookie_onclick() {
            //$.cookie('the_cookie'); 
            $("#showmsg").html("");
            var keyvalue = document.cookie.split(';');
            for (var i in keyvalue) {
                i = keyvalue[i].replace(/(^[\s]*)/g, ""); //去掉左邊空白
                if (i.indexOf("jsdemo") == 0) {
                    $("#showmsg").append(unescape(i.split('=')[1]));

                    //刪除
                    //$.removeCookie('the_cookie');
                    var expires = new Date();
                    expires.setTime(expires.getTime() -1);
                    document.cookie = " jsdemo=; expires=" + expires.toGMTString() + "; path=/";
                    break;
                }
            }
        }

呈現畫面:

image

image

 

範例檔案 下載

 

參考資料:

  1. http://www.w3schools.com/js/js_cookies.asp
  2. http://www.quirksmode.org/js/cookies.html
  3. http://www.dotblogs.com.tw/shadow/archive/2011/12/15/62306.aspx
  4. http://www.dotblogs.com.tw/junegoat/archive/2011/12/16/asp-net-cookie-read-create-del-chinese-encode-decode.aspx

 

另外也有 Cookie 的 JQuery Plugin

  1. https://github.com/carhartl/jquery-cookie