標籤:blog http os 使用 sp for 檔案 資料 div
Cookie,他最早出現是在Netscape Navigator 2.0中。Cookie其實就是由Web伺服器建立的、將資訊儲存在機上的檔案。那麼為什麼Web伺服器要在客戶機上面建立如此檔案?這是因為當客戶機發送一個請求到WEB伺服器時(譬如準備瀏覽頁面時),無論此客戶機.
是否是第一次來訪,伺服器都會把它當作第一次來對待,WEB伺服器所做的工作只是簡單的進行響應,然後就關閉與該使用者的串連。這樣處理過程所帶來的缺點時顯而易見的。自從網景公司開發出Cookie以後,就可以利用 Cookie來儲存使用者的識別資訊。Cookie的作用可以記錄了您在該網站上曾經訪問過的頁面,由此協助您下次訪問該網站時自訂查看。Cookies 也可以儲存個人可識別資訊。個人可識別資訊是可以用來識別或聯絡您的資訊,例如姓名、電子郵件地址、家庭或工作地址,或者電話號碼。然而,網站只能訪問您提供的個人可識別資訊。例如,除非您提供電子郵件名稱,否則網站將不能確定您的電子郵件名稱。另外,網站不能通過Cookie來訪問電腦上的其他資訊。當然除非你提供。那麼Cookie到底存放在什麼地方?如果機器的系統是視窗98且安裝在" C" 盤中,那麼Cookie存放在" C:WindowsCookies" 目錄中;如果機器系統是視窗2000且安裝在" C" 盤中,那麼Cookie存放在" C:Documents and SettingsAdministratorCookies" 目錄中。瞭解了Cookie這麼多知識,我們還是來瞭解一下本文的重點-- C#是如何進行Cookie方面編程的。主要內容有二點:其一是 C#是如何寫入Cookie;其二是 C#是如何訪問自己寫入的Cookie。
一、本文介紹的程式設計和啟動並執行軟體環境:
微軟公司視窗2000伺服器版
.Net FrameWork SDK Beta 2
C#進行Cookie方面編程是通過ASP.NET頁面來實現的。
二、C#如何寫入Cookie:
為了寫入Cookie,他的步驟主要有三步,具體如下:
首先就要建立一個HttpCookie對象,通過這個對象來構造一個Cookie,這個對象的名稱就是以後產生的Cookie名稱。具體如下代碼:
HttpCookie cookie = new HttpCookie ( " 使用者定義的Cookie名稱" ) ;
然後對建立的HttpCookie對象的" Value" 屬性分配一個字串值," Value" 的值就是後來產生的Cookie的值。具體代碼如下:
cookie.Value = "使用者給Cookie賦值" ; 如果你想寫入的Cookie數值不是一個簡單的字串,而是一個複雜的資料類型,我們知道這些資料類型是不能直接存貯到Cookie中的,因為 Cookie中只能存貯字串。但你可以通過一個變通的方法,就是把這個複雜的資料類型轉換成多個字串,然後把這多個字串同時賦值給產生的 Cookie值,這樣Cookie中的內容就豐富了,以後利用Cookie完成的功能也強大了。這時你可能就會明白為什麼當你瀏覽Web伺服器,Web伺服器會知道你什麼時候曾經瀏覽過,並且曾經待過多長時間等資訊了。因為這些資訊已經儲存到你第一次瀏覽頁面時,Web伺服器產生的Cookie中去了。下列代碼是把多個字串儲存到Cookie的例子:
cookie [ " 姓名" ] = " 王天";
cookie [ " 性別" ] = " 男";
cookie [ " 年齡" ] = " 26";
Cookie有臨時的,也有永遠的。永久 Cookie 以檔案形式儲存在電腦上,關閉 Internet Explorer 時仍然保留在電腦上。再次訪問該網站時,建立該 Cookie 的網站可以讀取。在具體的編程時候,是在寫入此Cookie的時候,設定Cookie的生命週期,具體如下代碼:
DateTime dtmNow = new DateTime();
dtmNow = DateTime.Now;
TimeSpan tmspMinute = new TimeSpan(0, 0, 30, 0, 0);
以上代碼是設定產生的Cookie的生命期為" 30分鐘" ,你可以通過修改" TimeSpan" 屬性來設定產生Cookie的具體生命期。
.最後調用" Response.Cookies" 對象的" Add()" 方法,加入此對象,這樣就可以產生一個Cookie了。具體代碼如下:
Response . Cookies . Add ( cookie ) ;
下列代碼就是在 C#寫入Cookie的完整代碼(Write.aspx):<% @ language = "C#" %>
在 C#頁面中建立cookie
此cookie的生命週期定義為一個小時
是上面代碼運行後的介面:
圖01:C#寫入Cookie的程式運行介面
當然上面的代碼產生的Cookie在內容上面有點單調了。其實對於內容十分豐富的Cookie來說,他還有許多屬性,充分的利用這些屬性,才可以利用了Cookie的強大功能。下表是Cookie的一些常用的屬性:
屬性 描述
Domain 設定/獲得Cookie應屬於的網域名稱。一旦設定了此屬性,則只限定於此網域名稱的Web伺服器訪問此Cookie。可以設定為"ccw.com.cn"
Path 設定/獲得Cookie應屬於的路徑,如果設定後,則訪問此Cookie的Web頁面則被限定在此路徑裡面。其他路徑的Web頁面則不能訪問。
Secure 設定/獲得一個標識來表明利用HTTP協議是否能夠安全的傳輸Cookie到用戶端的瀏覽器。
HasKeys 表明是否此Cookie是否是多個字串組成的。
在寫入Cookie的時候,最大限度的利用這些屬性,對於最大程度的利用寫入的Cookie是十分重要的。
三、C#是如何讀取已產生的Cookie:
讀取指定的Cookie比起寫入Cookie要來的容易的多了,只需要使用" Request.Cookies" 對象就可以完成。下面是讀取指定Cookie名稱的方法:
HttpCookie cookie = Request.Cookies [ " Cookie的名稱" ] ;
下面是顯示已經讀取了的Cookie的數值:
Response.Write (cookie . Value . ToString ( ) ) ; 掌握了上面的要點,讀取Cookie就顯得非常容易了,下列是讀取Cookie的程式碼(read.aspx): <% @ language = "C#" %>
在 C#頁面中讀取指定Cookie值
4.修改和刪除 Cookie
修改Cookie
不能直接修改 Cookie。
更改 Cookie 的過程涉及建立一個具有新值的新 Cookie,
然後將其發送到瀏覽器來覆蓋用戶端上的舊版本 Cookie。
刪除Cookie
刪除 Cookie(即從使用者的硬碟中物理移除 Cookie)是修改 Cookie 的一種形式。
由於 Cookie 在使用者的電腦中,因此無法將其直接移除。
但是,可以讓瀏覽器來為您刪除 Cookie。
該技術是建立一個與要刪除的 Cookie 同名的新 Cookie,
並將該 Cookie 的到期日設定為早於當前日期的某個日期。
當瀏覽器檢查 Cookie 的到期日時,瀏覽器便會丟棄這個現已到期的 Cookie。
下面的程式碼範例示範刪除應用程式中所有可用 Cookie 的一種方法:
複製C#代碼儲存代碼
HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i = 0; i < limit; i++)
{
cookieName = Request.Cookies[i].Name;
aCookie = new HttpCookie(cookieName);
aCookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(aCookie);
}
C# Cookie編程