protected void cookieuse()
{
//寫入cookie
HttpCookie cookie = new HttpCookie("Info");//定義cookie對象以及名為Info的項
DateTime dt = DateTime.Now;//定義時間對象
TimeSpan ts=new TimeSpan(1,0,0,0);//cookie有效作用時間,具體查msdn
cookie.Expires = dt.Add(ts);//添加作用時間
cookie.Values.Add("user","cxbkkk");//增加屬性
cookie.Values.Add("userid","1203");
Response.AppendCookie(cookie);//確定寫入cookie中
//讀取cookie
if(Request.Cookies["Info"]!=null)
{
string temp=Convert.ToString(Request.Cookies["Info"].Values["user"])+" "+Convert.ToString(Request.Cookies["Info"].Values["userid"]);
//讀全部就用Request.Cookies["Info"].Value)
if(temp=="")
{
Response.Write("空");
}
else
Response.Write(temp);
}
else
{
Response.Write("error");
}
//修改cookie
Response.Cookies["Info"]["user"] = "2";
Response.Cookies["Info"].Expires = DateTime.Now.AddDays(1); //刪除cookie下的屬性
HttpCookie acookie=Request.Cookies["Info"];
acookie.Values.Remove("userid");
acookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(acookie); //刪除所有cookie,就是設定到期時間為現在就行了
int limit=Request.Cookies.Count - 1;
for(int i=0;i<limit;i++)
{
acookie = Request.Cookies;
acookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(acookie);
}
}
1、Cookie存放的目錄
Cookie是存放在用戶端的東東,放在“TemporaryInternetFiles”目錄,所以說存在安全性的問題。大夥可通過以下方式找到具體位置:開啟控制台→Internet選項→常規→Internet臨時檔案→設定→即可看到“當前位置”,→點擊“查看檔案”將直接開啟該檔案夾,你也可以點擊“移動檔案夾”變更它所在的位置。
2、Cookie的有效期間
從我們可以清楚的看到每個Cookie文檔的“截止期”(即為有效期間)。在有效期間內,當登入電腦的使用者Administrator再次訪問172.meibu.com時,那麼IE就會在請求頁面的同時,連同上述的名稱為“Cookie:administrator@172.meibu.com”的Cookie文檔內容一起發送給伺服器。
若該文檔包含多個Cookie的值時,截止期則以最後的失效期為準。
3、Cookie的類型
這裡我們按有效期間來分,分為兩種:
a)即時型
指的是關閉瀏覽器(所有瀏覽172.meibu.com的IE)後,Cookie便失效,此類Cookie不會在“TemporaryInternetFiles”目錄出現。其實它也有截止期的,為“0001-01-01”
b)持久型
就是已指定具體“截止期”的,能夠在“TemporaryInternetFiles”目錄裡面找到的Cookie
4、Cookie的內容
雙擊開啟“Cookie:administrator@172.meibu.com”,我們看到以下內容,如(http://blog.csdn.net/images/blog_csdn_net/cityhunter172/85935/r_aspxForm06.jpg):
中,“■”是分行符號,你若是要打破什麼鍋來問我到底是怎麼知道的話。我倒是會很樂意的告訴你:這就是經驗!偶從學習C#那刻起,就拿第一個Windows程式——記事本來開刀,儲存文檔時得來的經驗。
所以伺服器讀出來的格式如(http://blog.csdn.net/images/blog_csdn_net/cityhunter172/85935/r_aspxForm07.jpg):
5、在ASP.NET頁面發放Cookie
發送上述Cookie的.cs代碼為:
System.Web.HttpCookie ck=new HttpCookie("ckValue0");
ck["Author"]="CityHunter";
ck.Expires=System.DateTime.Now.AddMinutes(10);//若不指定,則為即時型Cookie
//ck.Path="/FormTest/ManageSys";//設定Cookie的虛擬路徑,注意一定要以“/”開頭,否則為無效Cookie;請大家自行看一下它與在客房端的Cookie文檔“名稱”與“Internet地址”的關係
Response.Cookies.Add(ck);
ck=newHttpCookie("ckValue1");//重新建立一個名為ckValue1的Cookie
ck.Expires=System.DateTime.Now.AddMinutes(20);//即刻起20分鐘後失效
ck["E_Mail"]="mailto:cityhunter172@126.com%22;//設定ckValue1中的E_Mail值
ck["PersonalWeb"]="172.meibu.com";
Response.Cookies.Add(ck);//添加此Cookie
6、取回已發放Cookie的值
Response.Write(Request.Cookies["ckValue0"]["Author"]+"<br>");//用不著說明了吧
Response.Write(Request.Cookies["ckValue1"]["E_Mail"]+"<br>");
Response.Write(Request.Cookies["ckValue1"]["PersonalWeb"]);
好久沒有出作業啦(何出此言?),這第三篇呀,可是花了偶兩個星期的業餘時間調試、總結、撰寫哪,都說時光貴如金,不知我花的這些時間能換來多少銀子?換銀子,我看是沒指望啦,能得到閣下的一句評論,偶也滿足了。記住,你的評論就是偶繼續寫下去的動力。
作業:給Cookie賦於以下值,怎樣得到它的正確值
ck["str1"]="2222";
ck["str"]="str0=11111&str1=223";
可以肯定的是Request.Cookies["ckValue1"]["str"]得不到“str0=11111&str1=223”這個字串,大家不妨試一下Request.Cookies["ckValue1"]["str1"]會得到意想不到的字串喲。
提示:使用Server.UrlEncode()與Server.UrlDecode()
十三、發放永久性的驗證Cookie
終於……終於……最後一個章節,驀然回首,洋洋洒洒十二章。沒想到年少時寫不完作文的偶,居然也能編出幾千餘字的文章來呀,不得不佩服偶自己呀!再回首,一大片暈倒的人……。永遠到底有多遠?永久究竟是多久?只有天知道。
大家登入CSDN的時候是否留意到一個“2周內不用再登入”的複選框,它又是怎麼做到的呢?大家是否曾遇到過這樣的困惑:在執行System.Web.Security.FormsAuthentication.SetAuthCookie時明明已指定createPersistentCookie為true為何關閉瀏覽器仍不能直接存取網站?下面我們就這個問題給大家解釋一下,且介紹如何手工建立身分識別驗證票並加入Cookie中。
System.Web.Security.FormsAuthenticationTicket tk=newSystem.Web.Security.FormsAuthenticationTicket(
1,//指定版本號碼:可隨意指定
"Admin",//登入使用者名稱:對應Web.config中<allowusers="Admin"…/>的users屬性
System.DateTime.Now,//發布時間
System.DateTime.Now.AddYears(100),//失效時間:100年以後,夠永夠久了吧
false,//是否為持久Cookie:尚未發現有何用,至少目前偶還不知,下面會有說明
"測試使用者資料"//使用者資料:可用((System.Web.Security.FormsIdentity)User.Identity).Ticket.UserData擷取
);
stringstr=System.Web.Security.FormsAuthentication.Encrypt(tk);//加密身份驗票
//聲明一個Cookie,名稱為Web.config中<formsname=".APSX"…/>的name屬性,對應的值為身份驗票加密後的字串
System.Web.HttpCookieck=newHttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName,str);
//指定Cookie為Web.config中<formspath="/"…/>path屬性,不指定則預設為“/”
ck.Path=System.Web.Security.FormsAuthentication.FormsCookiePath;
//此句非常重要,少了的話,就算此Cookie在身份驗票中指定為持久性Cookie,也只是即時型的Cookie關閉瀏覽器後就失效;因此上面我說:我是真的還不知在身份驗票中指定為持久性Cookie有何用。
ck.Expires=System.DateTime.Now.AddYears(100);
Response.Cookies.Add(ck);//添加至客房端