作為一個程序員cookie編程最必須要掌握的知識點本文章講一下cookie編程要注意的一些問題及應用技巧Cookie其實就是由Web服務器創建的將信息存儲在計算機上的文件那麼為什麼Web服務器要在客戶機上面創建如此文件?這是因為當客戶機發送一個請求到WEB服務器時(譬如准備浏覽頁面時)無論此客戶機是否是第一次來訪服務器都會把它當作第一次來對待WEB服務器所做的工作只是簡單的進行響應然後就關閉與該用戶的連接這樣處理過程所帶來的缺點時顯而易見的自從網景公司開發出Cookie以後就可以利用Cookie來保存用戶的識別信息Cookie的作用可以記錄了您在該站點上曾經訪問過的頁面由此幫助您下次訪問該站點時自定義查看Cookies 也可以存儲個人可識別信息個人可識別信息是可以用來識別或聯系您的信息例如姓名電子郵件地址家庭或工作地址或者電話號碼然而網站只能訪問您提供的個人可識別信息例如除非您提供電子郵件名稱否則網站將不能確定您的電子郵件名稱另外網站不能通過Cookie來訪問計算機上的其他信息當然除非你提供那麼Cookie到底存放在什麼地方?如果機器的系統是視窗且安裝在 C 盤中那麼Cookie存放在 C:\Windows\Cookies 目錄中如果機器系統是視窗且安裝在 C 盤中那麼Cookie存放在 C:\Documents and Settings\Administrator\Cookies 目錄中了解了Cookie這麼多知識我們還是來了解一下本文的重點 C#是如何進行Cookie方面編程的主要內容有二點其一是 C#是如何寫入Cookie其二是 C#是如何訪問自己寫入的Cookie
一本文介紹的程序設計和運行的軟件環境
微軟公司視窗服務器版
Net FrameWork SDK Beta
C#進行Cookie方面編程是通過ASPNET頁面來實現的
二C#如何寫入Cookie
為了寫入Cookie他的步驟主要有三步具體如下
首先就要創建一個HttpCookie對象通過這個對象來構造一個Cookie這個對象的名稱就是以後產生的Cookie名稱具體如下代碼
HttpCookie cookie = new HttpCookie ( 用戶定義的Cookie名稱 ) ;
然後對創建的HttpCookie對象的 Value 屬性分配一個字符串值 Value 的值就是後來產生的Cookie的值具體代碼如下
cookieValue = 用戶給Cookie賦值 ; 如果你想寫入的Cookie數值不是一個簡單的字符串而是一個復雜的數據類型我們知道這些數據類型是不能直接存貯到Cookie中的因為Cookie中只能存貯字符串但你可以通過一個變通的方法就是把這個復雜的數據類型轉換成多個字符串然後把這多個字符串同時賦值給產生的Cookie值這樣Cookie中的內容就豐富了以後利用Cookie完成的功能也強大了這時你可能就會明白為什麼當你浏覽Web服務器Web服務器會知道你什麼時候曾經浏覽過並且曾經待過多長時間等信息了因為這些信息已經存儲到你第一次浏覽頁面時Web服務器產生的Cookie中去了下列代碼是把多個字符串存儲到Cookie的例子
cookie [ 姓名 ] = 王天;
cookie [ 性別 ] = 男;
cookie [ 年齡 ] = ;
Cookie有臨時的也有永遠的永久 Cookie 以文件形式存儲在計算機上關閉 Internet Explorer 時仍然保留在計算機上再次訪問該站點時創建該 Cookie 的網站可以讀取在具體的編程時候是在寫入此Cookie的時候設定Cookie的生命周期具體如下代碼
DateTime dtNow = DateTime Now ;
TimeSpan tsMinute = new TimeSpan ( ) ;
cookie Expires = dtNow + tsMinute ;
以上代碼是設定產生的Cookie的生命期為 一個小時 你可以通過修改 TimeSpan 屬性來設定產生Cookie的具體生命期
最後調用 ResponseCookies 對象的 Add() 方法加入此對象這樣就可以產生一個Cookie了具體代碼如下
Response Cookies Add ( cookie ) ;
下列代碼就是在 C#寫入Cookie的完整代碼(Writeaspx)
<% @ language = C# %>
<script runat = server >
void WriteClicked ( Object Sender EventArgs e )
{
//創建一個HttpCookie對象
HttpCookie cookie = new HttpCookie ( NameField Text ) ;
//設定此cookies值
cookie Value = ValueField Text ;
//設定cookie的生命周期在這裡定義為一個小時
DateTime dtNow = DateTime Now ;
TimeSpan tsMinute = new TimeSpan ( ) ;
cookie Expires = dtNow + tsMinute ;
cookie [ 姓名 ] = 王天 ;
cookie [ 性別 ] = 男 ;
cookie [ 年齡 ] = ;
//加入此cookie
Response Cookies Add ( cookie ) ;
Response Write ( NameField Text + Cookie創建完畢 <br > <hr > ) ;
}
</script >
<html >
<body >
<h > 在 C#頁面中創建cookie </h >
此cookie的生命周期定義為一個小時
<form runat=server>
Cookie名稱<asp:textbox id = NameField runat = server /> <br >
Cookie的值<asp:textbox id = ValueField runat = server /> <br >
<asp:button text = 創建Cookie onclick = WriteClicked runat = server /> <br >
</form >
</body >
</html >
當然上面的代碼產生的Cookie在內容上面有點單調了其實對於內容十分豐富的Cookie來說他還有許多屬性充分的利用這些屬性才可以利用了Cookie的強大功能下表是Cookie的一些常用的屬性
屬性 描述
Domain 設定/獲得Cookie應屬於的域名一旦設定了此屬性則只限定於此域名的Web服務器訪問此Cookie可以設定為
Path 設定/獲得Cookie應屬於的路徑如果設定後則訪問此Cookie的Web頁面則被限定在此路徑裡面其他路徑的Web頁面則不能訪問
Secure 設定/獲得一個標識來表明利用HTTP協議是否能夠安全的傳輸Cookie到客戶端的浏覽器
HasKeys 表明是否此Cookie是否是多個字符串組成的
在寫入Cookie的時候最大限度的利用這些屬性對於最大程度的利用寫入的Cookie是十分重要的
三C#是如何讀取已產生的Cookie
讀取指定的Cookie比起寫入Cookie要來的容易的多了只需要使用 RequestCookies 對象就可以完成下面是讀取指定Cookie名稱的方法
HttpCookie cookie = RequestCookies [ Cookie的名稱 ] ;
下面是顯示已經讀取了的Cookie的數值
ResponseWrite (cookie Value ToString ( ) ) ; 掌握了上面的截止閥要點讀取Cookie就顯得非常容易了下列是讀取Cookie的程序代碼(readaspx) <% @ language = C# %>
<script runat = server >
void ReadClicked ( Object Sender EventArgs e )
{
//得到用戶輸入的cookie名稱
String strCookieName = NameField Text ;
//獲得cookie
HttpCookie cookie = RequestCookies [ strCookieName ] ;
//確定是否存在用戶輸入的cookie
if ( null == cookie ) {
ResponseWrite ( 沒有發現指定的cookie <br > <hr > ) ;
}
else {
//找到指定的cookie顯示cookie的值
String strCookieva lue = cookie Value ToString ( ) ;
ResponseWrite ( strCookieName + cookie 的值為 <b >
+ strCookieva lue + </b > <br > <hr > ) ;
}
}
</script >
<html >
<body >
在 C#頁面中讀取指定Cookie值<br >
<form runat = server >
請輸入要讀取的Cookie名稱<asp:textbox id = NameField runat = server />
<asp:button text = 讀取cookie onclick = ReadClicked runat = server />
</form >
</body >
</html >
好了十分差不多夠了謝謝大家的關注如有不當之處敬請指正
From:http://tw.wingwit.com/Article/program/net/201311/13913.html