Asp.Net’de Cookie İşlemleri

Cookie client yani ziyaretçi bazlı veri saklanmasına yarayan bir yapıdır. Cookie browser da saklanır silinme zamanı geldiğinde browser cookie yi otomatikman siler. Client bazlı olduğu için önemli bilgilerin cookie ye atılmamasına dikkat edilmelidir.

Cookie browser da tutulan bir yapıdır. Örneğin Firefox ile bir E-Ticaret web sitesine girdiniz ve üye girişi yapmadan sepetinize ürünler eklediğinizde büyük bir ihtimal ile sepet bilgileriniz cookie olarak browser da saklanıyordur. Firefox da gezindiğiniz ve cookie yi silmediğiniz sürece sepet bilgileriniz saklanacaktır. Aynı anda Internet Explorer da o web sitesine girdiğinizde sepetinizin boş olduğunu görürsünüz, çünkü sepet cookie si Firefox tarayıcısındadır. Session bilgileri de cookie de tutulur, örneğin Facebook’a giriş yapıp sonra da browser ın cookie sini temizlerseniz (Ctrl + Shift + Delete) çıkış yapmış olursunuz.

Asp.Net de cookie yazma işlemi Response nesnesi ile, cookie okuma işlemi Request nesnesi ile yapılır. Bir cookie de 1 ve 1 den fazla değer tutulabilir. Cookie yazma işlemi aşağıdaki gibidir.

HttpCookie c = new HttpCookie("MyCookie", "değer"); /*MyCookie isminde cookie oluşturduk ve value sine değeri atadık*/

c.Expires = DateTime.Now.AddDays(30); /*Cookie nin geçerli olacağı süreyi belirttik */

HttpContext.Current.Response.SetCookie(c); /*Response nesnesi ile oluşturduğumuz cookie yi ziyaretçinin tarayıcısına yazdırdık. */

Burada dikkat edilmesi gereken nokta oluşturduğumuz cookie yi Response nesnesi ile yazıyor olmamızdır. Response.SetCookie(c); komutu olsaydı cookie nesnesi ziyaretçinin browserına kayıt edilmiş olmazdı. Cookie okurken ise Request nesnesini kullanacağız.

HttpCookie MyCookieObject = Request.Cookies["MyCookie"];

Yukarıdaki satır da MyCookie bulunamaz ise geriye null değeri verir. MyCookieObject i kullanarak aldığımız cookie ile ilgili işlemler yapabiliriz. Cookie nin değerini okumak için HttpCookie nesnesinin value property sini kullanabiliriz.

string value = MyCookieObject.Value;

Cookie silmek için ise Response.Cookies.Remove metoduna silmek istediğimiz cookie nin adını veririz.

Response.Cookies.Remove("MyCookie");

Bir cookie de birden fazla değer de tutulabilir. Bunun için HttpCookies in Values Property si kullanılır.

HttpCookie cSepet = new HttpCookie("Sepet");
cSepet.Values["1"] = "5";
cSepet.Values["2"] = "10";
cSepet.Values["4"] = "15";
cSepet.Expires = DateTime.Now.AddDays(1o);
Response.Cookies.Add(cSepet);

Yukarıdaki kod ile Sepet cookie sinde 1,2,4 key değerleri ile birden fazla veri tutulmaktadır. Sepet cookie sini okurken ise Request.Cookies ile cookie yi okuyup HttpCookie nesnesinin values property si ile bu cookie nin key değerleri alınır ve bu key değerlerinin value leri okunur.

string ID, Adet;

HttpCookie cSepet = Request.Cookies["Sepet"];

foreach (string item in cSepet.Values) /* Sepet cookie sindeki key lerin listesi string[] */

{

ID = item;

Adet = Request.Cookies["Sepet"][item]; /* Sepet cookie sindeki key lerin değerleri okunur */

}

Sepet cookie sindeki bir key in değerini güncellemek için ise önce sepet cookie si HttpCookie nesnesine atılır. Key boş olarak tekrar setlenir ve cookie tekrar yazılır.

HttpCookie cSepet = Request.Cookies["Sepet"];
cSepet.Values["2"] = "";
Response.Cookies.Add(cSepet);