日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cookie全解

發(fā)布時間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cookie全解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.?Cookie?可以存儲哪些值

??在?Cookie?中只能存儲個人可識別信息.?個人可識別信息是指可以用來識別或聯(lián)系用戶的信息.?例如用戶的姓名,?電子郵件,?家庭住址等.?必須強調(diào)的是,?這些可識別信息必須是非機密或重要信息.

?

2. 使用?Cookie?對象保存和讀取客戶端信息.

??要存儲一個?Cookie?變量,?可以通過?Response?對象的?Cookie?集合,?語法如下:

? Response.Cookies[varName].Value=值;

?

??其中,?varName?為變量名.

??要取回?Cookie,?可以使用?Request?對象的?Cookie?集合,?并將指定的?Cookie?集合返回,?語法如下?:

??變量名=Request.Cookies[varName].Value;

??以例為例:?用?Cookie?操作客戶端?IP.?代碼如下:?

使用Cookie保存和讀取客戶端信息
//保存客戶端信息
string UserIP = Request.UserHostAddress.ToString();//獲取客戶端的IP地址
Response.Cookies["IP"].Value = UserIP;//將客戶端的IP地址保存在Cookies對象中
Response.Cookies["IP"].Expires = DateTime.MaxValue;//設(shè)計Cookies的失效期

//讀取
Response.Write(Request.Cookies["IP"].Value);//從Cookies中讀取客戶端IP地址值

?

?

3.?加密?Cookie?中的數(shù)據(jù)

??為了避免用戶信息被他人竊取,?增強網(wǎng)站的安全性,?通常需要對?Cookie?中的數(shù)據(jù)進行加密,?加密代碼如下:???

對Cookie中的數(shù)據(jù)加密
string data = "對Cookie中的數(shù)據(jù)加密。";
Response.Cookies[
"data"].Value = FormsAuthentication.HashPasswordForStoringInConfigFile(data, "md5");
Response.Write(Request.Cookies[
"data"].Value);

?

4.?使用?Cookie?對象在頁面之間傳值.

??使用?Cookie?對象在頁面之間傳值與使用?Session?對象在頁面之間傳值的方法一樣,?但兩者有本質(zhì)區(qū)別.?即Cookie?是存放在客戶端的,?而?Session?是存放在服務(wù)器端的.?Cookie?在使用時,?還需要配合?Asp.net?內(nèi)置對象?Request.

使用?Cookie?對象傳送信息的代碼如下:?

使用Cookie傳客戶信息
if (txtName.Text == "A" && txtPassword.Text == "a")
{
HttpCookie newCookie
= new HttpCookie("UserName");
newCookie.Value
= txtName.Text.Trim();
Response.AppendCookie(newCookie);
Server.Transfer(
"B.aspx");
}
else
{
Response.Write(
"<script>alert('登錄失敗!');</script>");
}

?

?

在?目標頁面 (B.aspx)中,?接收?Cookie?對象傳來的值,?并將其顯示在界面上,?代碼如下:?

接收
Label1.Text = Request.Cookies["UserName"].Value.ToString();

?

?

5.?使用?Cookie?驗證用戶登錄.

??使用?Cookie?來驗證用戶登錄,?首先需要將登錄信息保存在?Cookie?對象中,?然后讀取并驗證.?

??以例為例,?當(dāng)用戶注冊時?(?當(dāng)然很多情況下也可以是用戶退出系統(tǒng)?),?將用戶和用戶密碼保存在?Cookie?對象中,?代碼如下:??

使用注冊時保存Cookie
Response.Cookies["SavedLogin"]["UserName"] =txtName.Text.Trim();
Response.Cookies[
"SavedLogin"]["UserPwd"] = txtPassword.Text.Trim();
Response.Cookies[
"SavedLogin"].Expires = DateTime.Now.AddDays(1);
Response.Write(
"<script>alert('注冊成功!');location='Default.aspx';</script>");

?

??而當(dāng)用戶登錄時,?首先判斷?Cookie?對象是否失效,?如果沒有失效,?則判斷用戶輸入的信息與?Cookie?對象中保存的信息是否一致,?如果一致,?就進行其他操作.?代碼如下:?

?

讀取
if (Request.Cookies["SavedLogin"] == null)
{
Response.Write(
"<script>alert('Cookie 失效!');location='Default.aspx';</script>");

}
else
{
if (txtName.Text == Request.Cookies["SavedLogin"]
[
"UserName"].ToString() && txtPassword.Text ==
Request.Cookies[
"SavedLogin"]["UserPwd"].ToString())
{
Session[
"UserName"] = txtName.Text.Trim();
Response.Redirect(
"NavigatePage.aspx");
}
else
{
Response.Write(
"<script>alert('登錄失敗!')");
}
}

?

?

6.?創(chuàng)建及存取多個鍵值的?Cookie?對象.

??多鍵值的應(yīng)用其實是一種?"分類"?思想,?把某一類信息存儲在一起.?實現(xiàn)方法是?

??使用?Response?對象可以創(chuàng)建多個數(shù)據(jù)值的?Cookie,?語法如下:

? Response.Cookies["CookieName"]["KeyName"]="Cookie中相對索引鍵的值";

??例如,?使用多鍵值保存用戶名與密碼.?代碼如下:

?

使用Cookie存儲多鍵值信息
if (txtName.Text == "A" && txtPassword.Text == "a")
{
Response.Cookies[
"UserInfo"]["UserName"] = this.txtName.Text.Trim();
Response.Cookies[
"UserInfo"]["UserPwd"] = this.txtPassword.Text.Trim();
Response.Redirect(
"B.aspx");


}
else
{
Response.Write(
"<script>alert('登錄失敗!');</script>");
}

?

???當(dāng)發(fā)出網(wǎng)頁請求時,?瀏覽器會將?Cookie?信息發(fā)送到服務(wù)器.?在服務(wù)器端,?可以使用?Request?對象來存取?Cookie中的數(shù)據(jù)值.?語法格式有以下3種形式.?

?? 方法一: 直接取出數(shù)據(jù)值

?? stirng str1=Response.Cookies["CookieName"]["KeyName"];??

?? 方法二: 利用索引來取出數(shù)據(jù)值

?? string str2=Response.Cookies["CookieName"].Values[1];

?? 方法三: 利用索引鍵名來取出數(shù)據(jù)值.

?? string str3=Response.Cookies["CookieName"].Values["KeyName"];

?

?

7.?遍歷?Cookie?集合

??此處以實例演示說明:?如何遍歷客戶端的?Cookie?對象,?并將客戶端的所有?Cookie?對象的內(nèi)容值顯示出來.?代碼如下:?

遍歷Cookie集合
string[] cookieName, keyName;//定義兩個數(shù)組,用來存放名稱
HttpCookieCollection myCookieCollection;//定義Cookies集合對象
HttpCookie myCookie;//定義Cookie對象
myCookieCollection = Request.Cookies;//將客戶端的Cookie取出
cookieName = myCookieCollection.AllKeys;//取得集合中所有的Cookie名稱
for (int i=0; i <= cookieName.GetUpperBound(0); i++)//對每個Cookie進行循環(huán)
{
myCookie
=myCookieCollection[cookieName[i]];
Response.Write(
"該Cookie的名稱:"+myCookie.Name +"<br>"+"該Cookie的到期時間:"+myCookie.Expires+"<br>");
Response.Write(
"該Cookie中所有的內(nèi)容值如下所示:"+"<br>");//輸出Cookie內(nèi)容
keyName = myCookie.Values.AllKeys;
for (int j = 0; j <= keyName.GetUpperBound(0); j++)
{
Response.Write(keyName[j]
+""+myCookie[keyName[j]]+"<br>");
}
Response.Write(
"<hr>");

?

?

8.?設(shè)置?Cookie?變量的的生命周期

??雖然?Cookie?對象變量是存放在客戶端計算機上,?但是也不是永遠不會消失.?設(shè)計人員在程序中設(shè)定?Cookie?對象的有效日期,?語法如下:

? Response.Cookies["CookieName"].Expires=日期;

?

??如果沒有指定效期?(?Expires?屬性),?Cookie?變量將不會被保存.?當(dāng)關(guān)閉瀏覽器時,??Cookie?變量也會隨之消失.

??這里演示幾種設(shè)定有效期的方法.?

設(shè)置Cookie的有效期
//20分鐘后到期
TimeSpan ts=new TimeSpan(0, 0, 20, 0);
Response.Cookies[
"myCookie"].Expires=DateTime.Now.Add(ts);

//一個月后到期
Response.Cookie["myCookie"].Expires=DateTime.Now.AddMouths(1);

//指定具體有效日期
Response.Cookies["myCookie"].Expires=DateTime.Parse("2010-10-1");

//永遠不過期
Response.Cookies["myCookie"].Expires=DateTime.MaxValue;

//關(guān)閉瀏覽器后過期
Response.Cookies["myCookie"].Expires=DateTime.MinValue;

?

?

?

?

9. 刪除客戶端的?Cookie.

? 刪除客戶端的?Cookie?主要是設(shè)置指定?Cookies?的有效期,?有以下兩種方式.

??方法一:?將指定?Cookie?的有效期設(shè)置為過去的某個時間.?例如,?設(shè)置?Cookie?有效期為當(dāng)前系統(tǒng)時間的前一天,?代碼如下:

??Response.Cookies["myCookie"].Expires=DateTime.Now.AddDays(-1);

?

?

??方法二:?將指定?Cookie?的有效期設(shè)置為最小值?(?MinValue).?當(dāng)瀏覽器關(guān)閉時,?相關(guān)?Cookies?失效.?代碼如下:?

? Response.Cookies["myCookie"].Expires=DateTime.MinValue;

?

?

10.?刪除多值?Cookie?中的某個值.

??使用?Remove方法.?相關(guān)代碼正下:?

刪除多值Cookie中的某個值
if (txtval1.Text != "" && txtval2.Text != "")
{
HttpCookie hc
= Request.Cookies["Val"];
hc.Values.Remove(
"val2");
Response.Cookies.Add(hc);
}
else
{
Response.Write(
"請先輸入變量值!");

}

?

?

11.?使用?Cookie?防止網(wǎng)上重復(fù)投票

???Cookie提供了一種在?Web?應(yīng)用程序中存儲用戶特定信息的方法.?例如,?當(dāng)用戶第一次瀏覽?Web?站點時,?Cookie將會記下用戶登錄?IP地址,?在Cookie?的有效期內(nèi),?當(dāng)該用戶再次發(fā)出瀏覽此?Web?站點中頁面的請示時,?瀏覽器就會和服務(wù)器交換?Cookie信息,?識別該用戶的身份.?

???這里制作一個簡單的程序.?使用?Cookie?的這個特性防止重復(fù)投票.

???實現(xiàn)方法是,?將客戶端的?IP?地址保存在?Cookie?對象中,?主要代碼如下:

保存客戶端的IP到Cookie
//判斷指定的IP是否已投過票了,如果已經(jīng)投過了,則彈出提示對話框
string UserIP = Request.UserHostAddress.ToString();
int VoteID = Convert.ToInt32(RadioButtonList1.SelectedIndex.ToString())+1;
//獲取名為userIP的Cookie對象
HttpCookie oldCookie=Request.Cookies["userIP"];
//判斷該Cookie對象是否存在
if (oldCookie == null)
{
UpdateVote(VoteID);
Response.Write(
"<script>alert('投票成功,謝謝您的參與!')</script>");
//定義新的Cookie對象
HttpCookie newCookie = new HttpCookie("userIP");
newCookie.Expires
= DateTime.MinValue;
//添加新的Cookie變量IPaddress,值為UserIP
newCookie.Values.Add("IPaddress", UserIP);
//將變量寫入Cookie文件中
Response.AppendCookie(newCookie);
return;
}

?

?

???然后從Cookie中獲取客戶端的IP地址并判斷該IP地址是否已訪問過網(wǎng)站,?如果已訪問過,?則彈出提示框,?提示用戶,?主要代碼如下:

從Cookie中獲取客戶端IP地址
//從Cookie中獲取客戶端IP地址
string userIP = oldCookie.Values["IPaddress"];
if (UserIP.Trim() == userIP.Trim())
{
Response.Write(
"<script>alert('一個IP地址只能投一次票,謝謝您的參與!');history.go(-1);</script>");
return;

}
else
{
//創(chuàng)建 HttpCookie 類型的對象并為它分配名稱為userID
HttpCookie newCookie = new HttpCookie("userIP");
//為 Cookie 的子項賦值,即將客戶端IP地址賦給Cookie的子項,并將其命名為IPaddress
newCookie.Values.Add("IPaddress", UserIP);
//設(shè)置所有 Cookie失效期
newCookie.Expires = DateTime.MinValue;
//將該 Cookie 添加到 Cookies 集合中
Response.Cookies.Add(newCookie);
//Response.AppendCookie(newCookie);
UpdateVote(VoteID);
Response.Write(
"<script>alert('投票成功,謝謝您的參與!')</script>");
return;
}

?

?

12.?使用?Cookie?實現(xiàn)自動登錄

???一般網(wǎng)站都會提供自動登錄服務(wù),?簡單的說就是你第一次(或某一次)登錄成功后在某個時間段內(nèi)不需要再輸入用戶名或密碼進行登錄.?

???這很網(wǎng)站會提供給用戶一個選擇時間段的服務(wù).?下面這個演示示例中,?用戶可以在兩個星期內(nèi),?登錄時不再要求輸入密碼.?

???代碼如下:

?

使用Cookie將實現(xiàn)自動登錄
if (Request.Cookies["UserName"] != null)
{
Response.Redirect(
"B.aspx?UserName=" + Request.Cookies["UserName"].Value);
}
else
{
if(this.txtName.Text=="A"&&this.txtPassword.Text=="a")
{
if (CheckBox1.Checked == true)
{
Response.Cookies[
"UserName"].Value = System.Web.HttpUtility.UrlEncode(txtName.Text);
Response.Cookies[
"UserName"].Expires = DateTime.Now.AddDays(14);
}
Response.Redirect(
"B.aspx?UserName=" + System.Web.HttpUtility.UrlEncode(txtName.Text));

}
else
{
Response.Write(
"<script>alert('輸入出錯!')</script>");
}
}

?

?

13.?使用?Cookie?實現(xiàn)單點登錄

???單點登錄(?Single?Sign?On,?SSO)是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一.?簡單的說,?就是每個客戶端對每個網(wǎng)站同時只能打開一個.?這樣最大的好處是可以緩解服務(wù)器的壓力.?一般在企業(yè)網(wǎng)站中較為常見.?因為門戶網(wǎng)站,?社區(qū)博客等希望你打開的越多越好,?不會設(shè)置單點登錄.?

???實現(xiàn)同11中的自動登錄原理類似,?此處略.?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/beihoudetiantang/archive/2008/09/21/1295260.html

總結(jié)

以上是生活随笔為你收集整理的Cookie全解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。