[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;
}
}
}
呈現畫面:
範例檔案 下載
參考資料:
- http://www.w3schools.com/js/js_cookies.asp
- http://www.quirksmode.org/js/cookies.html
- http://www.dotblogs.com.tw/shadow/archive/2011/12/15/62306.aspx
- http://www.dotblogs.com.tw/junegoat/archive/2011/12/16/asp-net-cookie-read-create-del-chinese-encode-decode.aspx
另外也有 Cookie 的 JQuery Plugin