c#cookie詳細用法


c# cookie 詳細用c# 2009-06-30 12:00:34 閱讀1423 評論3   字號:大中小 訂閱 刪除Cookie Response.Cookies["Cookiename"].Expires = DateTime.Now.AddDays(-1);

用C#如何創建、讀取cookie

用C#如何創建、讀取cookie:

一、創建cookie,並寫入數據:

   //創建、寫入Cookie

    HttpCookie cookie = Request.Cookies["MWS_User"];

    if (cookie == null)

    {

          cookie = new HttpCookie("MWS_User");

    }

    cookie.Values.Set("UserID", strUserID);

    Response.SetCookie(cookie);

 

二、讀取cookie:

HttpCookie cookie = Request.Cookies["MWS_User"];

if (cookie != null && cookie["UserID"].ToString() != "")

{

      Response.Write("cookie=" + cookie["UserID"].ToString());

 }

 

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"]="cityhunter172@126.com";//設置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);//添加至客房端

 

 

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"]="cityhunter172@126.com";//設置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);//添加至客房端

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM