You are on page 1of 13

Cookie v Session 1.

GII THIU Trong qu trnh pht trin web, mt nhu cu rt thng xuyn ny ra l lm cch no truyn d liu t trang web ny sang trang web khc? Tt nhin ta c th dng form submit v truyn data t mt trang web sang trang web tip theo qua phng thc POST hoc truyn d liu qua URL theo phng thc GET. Tuy nhin, cch lm ny khng phi lc no cng kh thi. Trong nhiu trng hp, cch dng form hoc URL gy kh nhiu phin phc hoc hu nh khng th thc hin c. V d: ngi dng click ln 1 link trn trang web ca bn i sang 1 website khc, ri click ln 1 link trn website kia quay ngc v website ca bn. Rt may mn, vn c gii quyt kh d dng vi s tr gip ca COOKIE v SESSION. V cn hn th na, PHP, ASP, ... cung cp rt sn nhiu hm v phng tin lm vic d dng v hiu qu vi COOKIE v SESSION. Trong bi vit ny chng ta s tm hiu v COOKIE, SESSION v cch s dng COOKIE, SESSION. 2. COOKIE V SESSION L G? Cookie l 1 on d liu c truyn n browser t server, on d liu ny s c browser lu tr (trong memory hoc trn a) v s gi ngc ln li server mi khi browser ti 1 trang web t server. Nhng thng tin c lu tr trong cookie hon ton ph thuc vo website trn server. Mi website c th lu tr nhng thng tin khc nhau trong cookie, v d thi im ln cui bn gh thm website, nh du bn login hay cha, v.v... Cookie c to ra bi website v gi ti browser, do vy 2 website khc nhau (cho d cng host trn 1 server) s c 2 cookie khc nhau gi ti browser. Ngoi ra, mi browser qun l v lu tr cookie theo cch ring ca mnh, cho nn 2 browser cng truy cp vo 1 website s nhn c 2 cookie khc nhau. Session l khong thi gian ngi s dng giao tip vi 1 ng dng. Session bt u khi ngi s dng truy cp vo ng dng ln u tin, v kt thc khi ngi s dng thot khi ng dng. Mi session s c mt nh danh (ID), 1 session khc nhau s c 2 ID khc nhau. Trong ng cnh ng dng web, website s quyt nh khi no session bt u v kt thc. Trong 1 session, website c th lu tr mt s thng tin nh nh du bn login hay cha, nhng bi vit no bn c qua, v.v... im ging v khc nhau gia Cookie v Session Cookie v Session u c chung mc ch l lu gi data truyn t 1 trang web sang 1 trang web khc (trn cng website). Nhng phng thc lu tr v qun l data ca Cookie v Session c phn khc nhau.

Cookie s c lu tr ti browser, do browser qun l v browser s t ng truyn cookie ngc ln server mi khi truy cp vo 1 trang web trn server. D liu lu tr trong Session s c ng dng qun l, trong ng cnh web, ng dng y s l website v webserver. Browser ch truyn ID ca session ln server mi khi truy cp vo website trn server. T lin h gia Session v Cookie: Mi Session gn vi 1 nh danh (ID). ID s c to ra trn server khi session bt u v c truyn cho browser. Sau browser s truyn li ID ny ln server mi khi truy cp vo website. Nh vy ta c th thy rng s rt tin nu nh Session ID c lu tr trong Cookie v c browser t ng truyn ln server mi khi truy cp vo website. S dng Cookie hay Session? S dng Session hoc Cookie l tu vo la chn ca Lp trnh vin, tuy nhin Session thng c a chung hn Cookie v mt s l do sau: * Trong mt s trng hp Cookie khng s dng c. C th browser c thit lp khng chp nhn cookie, lc session vn s dng c bng cch truyn session ID gia cc trang web qua URL, v d: script.php?session=abc123. * Lng data truyn ti gia browser v server: ch mi session ID c truyn gia browser v server, data thc s c website lu tr trn server. * Bo mt: cng t thng tin c truyn ti qua li gia browser v client cng tt, v cng t thng tin c lu tr ti client cng tt. i tng cookies v session trong ASP.Net Ni v hc thit k web ng ni chung v thit k web ASP.Net ni ring khng th khng ni n hai i tng cookies v session ny. Hm nay mnh s cng cc bn tm hiu s lc v cch dng v ng ng dng cc i tng ny vo trong web. Ni chung y u l cc bin mi trng c to ra s dng trong qu trnh thc hin ng dng web, n c th tn ti Server hay clien v c th t to ra, bin mt ty vo cch m chng ta ci t cho n. 1. S dng i tng cookies trong ASP.Net Bn tng s dng din n v ng k thnh vin v ang nhp, sau ln th mi ln sau vo trang din n t nhin mnh khng cn ng nhp na m vn xut ra thng bo cho mnh. chnh l mt ng dng hay ca i tng cookies.

y l mt tin ch my clien, n c hiu nh mt tp tin nh vi cc thng tin bn khai bo lc u, khi bn lt web c yu cu gi n Server th mc nhin cc thng tin cng gi ln server lun mt cng ng nhp na. i tng cookies ny tn ti trn trnh duyt mt thi gian nht nh ty theo mnh ci t, sau thi gian th bn phi khi to li bin mi s dng c na.

i tng cookies trong ASP.Net Lm vic vi cookies trong ASP.Net Bn thm cookies theo c php sau: 1<!-2Response.Cookies.Add(<HttpCookie>); 3--> V d: 1<!-2 3 4 5 HttpCookie ck = new HttpCookie("TenDangNhap"); ck.Value = txtTenDangNhap.Text; ck.Expires = DateTime.Now.AddDays(15); Response.Cookies.Add(ck);

6--> Cch khai bo trn c ngha l: to ra 1 Cookies c tn l TenDangNhap ly gi tr t text box txtTenDangNhap lu tr trn my ngi dng 15 ngy k t ngy to ra. Ly gi tr t Cookies 1<!-2 3 4--> Trng hp bin Cookies cha to hay ht hn th gi tr ly s l NULL. 2. i tng Session trong ASP.Net i tng Session l bin c to ra mi phin lm vic ca mt ngi dng, vy l mi ngi ng nhp vo s c mt session ring v phin lm vic ca h cng c bin session ring v c hy khi phin lm vic kt thc v h logout. Session l mt trong nhng bin quan trng nht trong ng dung web, n l ring bit vi cc i tng ngi dng tuy nhin bin ny c to ra s s dng tt c mi trang trong website v lu vt ca ngi dng lm nhng g trn website mnh. V d: WEB bn hng khi khch hng chn hng vo gi trang ch, v sau khch tham quan cc trang sn phm khc vn add c hng vo gi hng s lng tng ln v gi hy khi bm hy gi hay thanh ton. Cng nh Cookies, Session cng c thi gian nu qu thi gian session s t hy ngi ta gi l thuc tnh time out. HttpCookie ck = Request.Cookies("TenDangNhap"); string s = ck.Value;

Session trong ASP.Net Nh ni Session l bin hot ng trn Server nn tn b nh, Khi khng c tc ng t clien duy tr s tn ti ca bin Session th Session vn tn ti nn rt tn cng nh server do tnh t hy khi ht time s hot ng nh vo mt phng thc ngi ta gi lm phng thc Abandon. S dng bin ton cc Session trong ASP.net Cch khai bo bin Session: 1<!-2 Session["Tn Bin"] = Gi tr;

3--> Ly gi tr bin session: 1<!-2 <Bin> = Session["Tn Bin"];

3--> V d bn to mt trang ng nhp n gin sau khi submit cc thng tin ng nhp s gi cc thng tin qua trang khc v hin th ln. Gi s mnh to mt trang ng nhp: dangnhap.aspx vi giao din nh sau: <!-1 2 Tn: <asp:TextBox ID="txtTen" runat="server"></asp:TextBox>

Pass: <asp:TextBox ID="txtPass" runat="server" 3 TextMode="Password"></asp:TextBox> 4 <asp:Button ID="Submit" runat="server" onclick="Submit_Click" Text="Gi" />

5 --> Trong nt gi bn vit on code sau: 1<!-2 protected void Submit_Click(object sender, EventArgs e) 3 { 4 5 6 7 } 8--> y khai bo hai bin Session mt l ly tn, hai l ly Pass v tin hnh gi qua trang Nhn: Nhan.aspx trang Nhan.aspx bn ly thng tin nh sau: 1<!-2protected void Page_Load(object sender, EventArgs e) Session["ten"] = txtTen.Text; Session["pass"] = txtPass.Text; Response.Redirect("Nhan.aspx");

3 { 4 5 6 7 } 8--> Sau bn chy trang ng nhp ln nhp thng tin v gi s nhn c thng tin trang nhn. string ten = Session["ten"].ToString(); string pass = Session["pass"].ToString(); Response.Write("Cho bn: " + ten + "<br />Pass: "+pass);

i tng Session trong ASP.Net Kt lun: Mnh trnh by xong hai phn c bn l cookies v session trong web asp.net, hai phn ny rt quan trng v cn thit! Bi vit mang tnh gii thiu cc bn t m thm nha! Chc thnh cng! 1. Session l g? HTTP l giao thc khng c xy dng theo cch c th lu gi c trng thi gia hai ln giao dch. Khi mt ngi dng yu cu truy nhp mt trang Web, ri sau ngi dng ny li tip tc yu cu truy nhp i vi trang Web khc th HTTP khng th bit c rng l hai yu cu t cng mt ngi dng. tng ca vic iu khin phin lm vic l c th lu vt ca mt ngi dng trong sut mt phin lm vic. Nu chng ta lm c iu ny th s d dng cung cp mt truy nhp cho ngi dng, t ta c th lu vt trng thi ca ngi dng v c th thc hin vic mua bn trn mng. Session trong PHP c iu khin bi mt gi tr ID duy nht gi l sessionID, gi tr ny s c t ng sinh ra v m ha. SessionID c sinh ra bi PHP v c lu tr pha

client trong sut mt phin giao dch. N c th c lu tr trn cc Cookie my ngi dng hay truyn ln cc URL. SessionID c tc dng nh mt kho bn c th ng k nhng bin c bit gi l bin session. Ni dung ca nhng bin ny c cha trn Server. SessionID l nhng thng tin ch thy c pha client. Nu ti thi im no ca mt kt ni n trang Web ca bn, sessionID c th thy c trn cookie hay URL, bn c th truy nhp nhng bin session ch trn Server phin lm vic . 2. Cookie l g? Cookie l nhng mu tin nh m trang script c th cha trn cc my khch (client). Bn c th thit lp mt cookie trn mt my ngi dng bng cch gi mt HTTP header c cha d liu theo dng sau: Set-Cookie:Name=VALUE;[expires=DATE;][path=PATH;] [domain=DOMAIN_NAME;][secure] Cu lnh ny s to ra mt cookie c tn gi l NAME vi gi tr l VALUE. Trng expires s thit lp ngy m cookie s ht hiu lc, path v domain c th c s dng ch nh cc URL (ni m cookie s c gi i). T kho secure c ngha l cookie s khng gi i trn qu mt kt ni HTTP chun. Khi mt browser kt ni ti mt URL, trc tin n kim tra cc cookie c lu tr trn my. Nu c bt k mt cookie no c lin quan n a ch URL va c kt ni, chng s c truyn tr li cho server. 3. Thit lp cc cookie t PHP Ta c th thit lp cc cookie trong PHP bng cch s dng hm: int setcookie (string name [,string value [,int expire [,string path [,string domain [, int secure]]]]]); Nhng tham i ca hm tng ng vi nhng tham i ca Set-Cookie header trn. Nu ta thit lp cookie nh sau: setcookie ("TestCookie", "Test Value"); th khi ngi dng n thm trang k tip trong site ca ta (hoc reload trang hin ti) ta s phi truy nhp vo bin vi tn l "TestCookie" c cha gi tr l "Test Value", ta ch c th truy nhp ti n thng qua bin mng $HTTP_COOKIE_VARS [] ca PHP. Ta c th xo mt cookie bng cch gi li hm setcookie() vi tham i nh sau:

tn ca cookie l tn ca cookie cn xo v khng c trng gi tr. 4. S dng kt hp cookie vi session i vi cookie c mt s vn sau y: Mt vi webrowser khng th truy cp c ti cc cookie (khng h tr cookie) v mt s ngi dng khng c cc cookie trn browser ca h. y l l do PHP s dng c hai cch thc:cookie v URL method. Khi s dng PHP session, ta s khng phi thit lp cc cookie, nhng hm session s lu gi nhng thng tin ny cho chng ta. xem ni dung ca cc cookie c thit lp bi session ta s dng hm: session_get_cookie_params(). Hm ny s tr v mt mng lin kt m cc phn t ca mng cha cc thng tin nh: lifetime, path, domain,... thit lp cc tham s cho session cookie ta dng hm: void session_set_cookie_params (int lifetime [, string path [, string domain]]) 5. Lu gi sessionID PHP s s dng cc cookie mc nh cng vi session. Nu c th c, mt cookie s c thit lp cha SessionID. Mt cch s dng cc SessionID trn URL l dch PHP cng vi la chn enable-transid. Cch na l ta c th a sessionID vo trong th link. SessionID c cha trong hng SID. lm c iu ny, ta thm vo cui th link hng SID dng n nh l phng thc GET. V d: <A HREF = link.php?<?=SID?>> Hng SID lm vic c nh trn ch khi ta cu hnh PHP cng vi --enable-track-vars. 6. Thc thi nhng phin lm vic n gin Nhng bc c bn ca vic s dng session:

+ Bt u mt Session + ng k nhng bin Session + S dng bin Session + Hu b bin Session v kt thc Session a) Bt u mt Session Cch n gin nht bt u mt Session l dng hm: Bool Session_start(); Hm ny s kim tra xem c mt Session ID no c to ra hay cha. Nu cha th n s to ra mt Session ID, cn nu tn ti mt Session ID th thc cht n ch ly ra nhng bin Session ta c th dng n. Hm tr v gi tr TRUE nu thnh cng,ngc li tr v gi tr FALSE. Chng ta cng c th bt u mt Session bng cch cu hnh PHP n t ng bt u khi c ai thm trang Web ca ta. iu ny c th lm c nu ta chn session. auto_start trong file c:\Windows\php.ini Mt Session cng s c bt u khi ta ng k mt bin Session. b) ng k nhng bin Session cho mt bin c th lu du thng tin t mt trang script ny sang trang script khc, ta cn phi ng k n bng cch gi hm: bool session_register(mixed VarName [,mixed...]); Vic ng k ny s lu tr tn bin v ghi gi tr ca bin cho n khi phin giao dch kt thc hoc khi ta hu b (deregister) vic ng k bin . V d: ng k bin $Var_name ta vit nh sau: $Var_name= 5; session_register(Var_name);// khng nn s dng k t $ trong ng k mt bin c) S dng bin Session

a mt bin Session vo trong phm vi m n c th c s dng, ta cn phi khi to mt Session bng mt trong nhng cch nu trn. Sau , ta c th truy cp c nhng bin ny. Nu ng k bin ny l ton cc bng cch s dng hm register_global(), th ta c th truy nhp bin bnh thng thng qua tn bin, v d: $Var_name; Nu khng khai bo bin l ton cc th ta phi truy nhp nhng bin Session thng qua mng lin kt $HTTP_SESSION_VARS(Var_name); kim tra xem mt bin c ng k l bin Session hay cha ta dng hm: bool session_is_registered (string name); Hm ny tr v gi tr TRUE nu bin c ng k, ngc li tr v gi tr FALSE. Ta cng c th kim tra mt bin c l bin Session bng cch kim tra mng lin kt $HTTP_SESSION_VARS() v s tn ti ca bin. d) Hu b bin Session v kt thc Session Khi mun kt thc mt bin Session, ta c th hu b ng k ca bin bng hm: bool session_unregister (string name); Trong : name l tn bin ta mun hu ng k (tn ny khng cn c k t $) Hm tr v gi tr TRUE nu thnh cng, ngc li tr v gi tr FALSE. Hm ny ch c th hu ng k ca mt bin Session ti mt thi im. hu tt c cc bin Session hin ti, ta dng hm: void session _unset (); kt thc mt Session ta dng hm: bool session_destroy (); Hm ny s xo i SessionID v hy tt c nhng d liu lin quan n Session ny. Hm tr v gi tr TRUE nu thnh cng, ngc li tr v gi tr FALSE. Ta nn hy tt c cc bin Session trc khi kt thc mt Session. Khi nim Cookie v Session trong ASP.Net

Th 6, 12/04/2013

1. Cookie v Session l g?!

im chung gia Cookie v Session l vic lu tr v qun l mt s thng tin lin quan n ngi dng website, nhng thng tin ny cn dng trn nhiu trang web ca cng h thng website. Thng tin c lu tr vi khong thi gian quy nh trc, v c th t hy khi ht thi gian cho php. Cookie v Session thun tin cho vic gi thng tin qua li gia cc trang web m khng cn dng qua phng thc POST/GET gim thiu vic pht sinh thm bin. ng dng thng thy ca Cookie v Session l lu tr thng tin ng nhp ca ngi dng, xc nh thi im ng nhp, thot khi website Kt hp vi thao tc Redirect c th qun l, chn truy cp t ngi dng khi cha ng nhp 2. im ring ca Cookie Cookie c lu tr trn trnh duyt, khi ngi dng s dng trnh duyt truy cp vo mt website no th server s gi cookie v trnh duyt v lu tr trc tip trn my ngi dng (client). Cookie s khc nhau cho mi loi trnh duyt, IP ngi dng cng nh server ca website. Cookie c to ra bi website v gi ti browser, do vy 2 website khc nhau (cho d cng host trn 1 server) s c 2 cookie khc nhau gi ti trnh duyt . Mi trnh duyt s c cch qun l v lu tr cookie theo cch ring ca mnh, cho nn 2 trnh duyt cng truy cp vo 1 website s nhn c 2 cookie khc nhau. Mi ln c request ln website, trnh duyt s gi cookie ln server, server s c c ch c cookie v x l cho tc v no . Mi cookie c website gi n trnh duyt thng bao gm 3 thnh phn chnh sau:

a ch URL ca website m trnh duyt nhn cookie Thi gian tn ti ca Cookie Gi tr lu tr.

3. im ring ca Session Session dng lu phin lm vic ca ngi dng trn trang website. Kkhc vi Cookie, Session c lu tr trn webServer. Session c lu vi mt chui k t di gi l ID, Sessiong kt thc khi b xa hoc ht phin lm vic (ng trnh duyt Cookie lu trn file Client nn khi ng trnh duyt s khng mt Cookie). 4. Cookie trong ASP.NET Trong ASP.NET cc phng thc, thuc tnh lin quan n vic x l Cookie c lu tr trong class HttpCookie. Cc thuc tnh thng dng trong Cookie:

Name: Tn Cookie. Domain: Tn min ca Cookie lu tr. Expires: Xc nh thi gian hiu lc ca Cookie. Value: Gi tr ca Cookie. HasKeys: Cho bit Cookie c tp gi tr con hay khng. Values: Tp cc gi tr ca Cookie.

5. Phng thc thao tc ln Cookie

Ghi Cookie: Respone.Cookies[cookie][(key)|.attribute]=value; Trong : cookie l tn bin cookie, key l tham s m rng cho Cookie, attribute l cc thuc tnh ca bin Cookie.

c Cookie: value = Request.Cookies[cookie][(key)|.attribute]; Thao tc trn Cookie c nhiu Subkey

Xa Cookie: Vic xa Cookie thc cht l thao tc chnh thi gian hiu lc v trc thi im hin ti so vi gi h thng.

6. Session trong ASP.NET Trong ASP.NET cng nh cc cng ngh lp trnh web khc, Session c to ra khi Client bt u c Requset gi ti Server v s kt thc khi Client c thao tc hy Session hoc sau mt thi gian (nh trc) khng c bt k thao tc no ln Server. Khi Session c to ng thi phng thc Session_OnStart(); s c thc thi v tng t khi kt thc Session phng thc Session_OnEnd() s c thc thi. 7. Mt s phng thc ca Session:

Session.Timeout = minutes; tthi gian ca phin lmvic Session.SessionID ID ca phin lmvic Session.Abandon() Hyphinlmvic (hyc bind liu)

Cng c th dng Session lu cc bin gi tr nh Cookie

Session[nameVar] = value.

You might also like