筆者曾經(jīng)參與一個(gè)大型多用戶商城的開發(fā),系統(tǒng)用戶角色很多,有買家,賣家,代理商,系統(tǒng)管理員,普通管理員,超級(jí)管理員等,這些用戶都涉及到登陸系統(tǒng),然后建立cookies的問題,由于角色的不同,這些用戶登陸系統(tǒng)后,所建的cookies都相對(duì)獨(dú)立,而且對(duì)一個(gè)多用戶商城來說,cookies區(qū)分域很重要,不同的域名要建不同的域。因此筆者在開發(fā)的過程中,寫了很多次的建cookies,取cookies的代碼,不勝其煩!
既然都是建cookies,那么肯定有共同點(diǎn),我們何不抽象出來,寫一個(gè)通用的Cookie操作類呢,下面筆者就以.net為例,來說明下如何實(shí)現(xiàn)這個(gè)類吧!
/////以下是建cookies的函數(shù)
public void SetCookies(string domain, string type, XieGou.XGMap map)
{
HttpCookie cookie = new HttpCookie(type);//定義cookie對(duì)象
DateTime dt = DateTime.Now;//定義時(shí)間對(duì)象
TimeSpan ts=new TimeSpan(1,0,0,0);//cookie有效作用時(shí)間,具體查msdn
cookie.Expires = dt.Add(ts);//添加作用時(shí)間
cookie.Domain = domain;
for(int i =0 ;i < map.Size() ; i++)
{
cookie.Values.Add(map.GetTag(i),map.GetValue(i).ToString());//增加屬性
}
page.Response.AppendCookie(cookie);//確定寫入cookie中
}
/////以下是取cookies的函數(shù)
public string GetCookies(string type, string name)
{
if(page.Request.Cookies[type] != null)
{
if(page.Request.Cookies[type].Values[name] != null)
{
return page.Request.Cookies[type].Values[name].ToString();
}
else
{
return "0";
}
}
return "0";
}
下面我們來看下,如何調(diào)用這兩個(gè)函數(shù):
XieGou.XGMap map = new XGMap(); ///這里用到的Map類,可以參考網(wǎng)上資料寫一個(gè)
map.Add("shopid",shop.m_id.ToString()); ///添加map對(duì)應(yīng)表
map.Add("shopname",shop.m_name.ToString());
func.SetCookies(".shopxg.com","shopxg_namespace",map);
原理其實(shí)很簡單,先定義一個(gè)map類,把要建的cookies名稱和值放到map表里,然后統(tǒng)一由SetCookies來建cookies,這樣寫的好處,就是可以少寫很多代碼,特別是需要頻繁建cookies的網(wǎng)站!
上面是筆者的一點(diǎn)拙見,如有問題,歡迎交流。Email : cxl@xiegoo.com .
申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!