State Management - 2.2 Cookies

02 Şubat 2007 – 01:19

2.2 Cookies:

Cookiler(Çerez) daha sonra kullanmak amacıyla veri saklamanın diğer bir basit yoludur.Cookiler, esasında kullanıcının hard diskinde oluşturulan küçük text dosyalarıdır.Bu küçük text dosyalarının saklandığı yer tarayıcınızın kurulu olduğu alana göre değişme gösterebilir.Sayfalar arası veri paylaşımı için kullanılır.Projedeki her sayfa tarafından ismi bilinmek suretiyle kolayca okunabilir ve uzun dönem bilgi saklamaya elverişlidir.Bu kadar işlevinin yanı sıra pek çok dezavantajları da vardır.Basit stringleri saklayabilir(QueryString gibi).Çok kolay erişilebilir ve okunabilir bu da ciddi bir güvenlik sorunudur.Ulaşılması istenmeyen özel bilgiler cookiede saklanmamalıdır.Cookide önemli veri saklamamanın gerekliliğinin başka bir nedeni de cookienin saklandığı yerin kullanıcı hard diski olmasıdır ,kullanıcı dosyayı herhangi bir nedenle ortadan kaldırabilir veya tarayıcısını cookie kullanımına kapatabilir.Bu da uygulamada hataya neden olur.Bütün bu nedenlerden dolayı cookieler comleks stringler, gizli bilgiler ve fazla miktar bilgiler için iyi bir yöntem değildir.
            Cookie kullanmak istiyorsanız bütün yukarıdaki durumları göz önünde bulundurmak zorundasınız ve ayarlarınızı cookilere her zaman erişilebilir mantığıyla yapmamalısınız.Bu nedenle cookieleri daha çok kullanıcının bir önceki ziyaretinde neyle ilgilendiği,kaçıncı ziyareti olduğu,kullandığı font boyutu veya e-mail adresinin ne olduğu  gibi onunla ilgili tecrübe kazanabileceğiniz bilgilere erişebilmek için kullanmak en iyi yöntem olacaktır.
            Bir cookie nesnesi oluşturmak için Request ve Response nesnelerini kullanabiliriz.Request cookieye erişimi ,Response nesnesi de cookieyi değiştirmemizi sağlar.Cookieler uygulama açıldığında yaratılır ve default olarak ömürleri tarayıcı kapanasıya kadardır ama ömürleri ayarlanabilir(Cookies.Expires).
Bütün anlattıklarımızı bir örnekle açıklamaya çalışalım.Aşağıdaki kod bir kullanıcının siteyi ziyaretinde bir cookie yaratmasını istiyor ve sayfa yenilenince kullanıcıyı tanıyor.

 

public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TxtName;
protected System.Web.UI.WebControls.Button cmdStore;
protected System.Web.UI.WebControls.Label LblBilgi;

private void Page_Load(object sender, System.EventArgs e)
{
HttpCookie cookie=Request.Cookies["Preferences"];

  if(cookie==null)//Cookie yaratılmamışsa değeri NULL’dur
{
LblBilgi.Text="<b>Hoşgeldin Ziyaretçi<b/>";
}
else
{
LblBilgi.Text="<b>Cookie Bulundu<b/><br/><br/>";
LblBilgi.Text="Hoşgeldin     "+cookie["Name"];
}

       }

private void InitializeComponent()
{
this.cmdStore.Click += new System.EventHandler(this.cmdStore_Click);
}

private void cmdStore_Click(object sender, System.EventArgs e)
{
HttpCookie cookie=Request.Cookies["Preferences"];
if(cookie==null)
{
cookie=new HttpCookie("Preferences");
}
cookie["Name"]=TxtName.Text;
cookie.Expires=DateTime.Now.AddMonths(2);//Cookie 2 ay süreyle saklanacak…
Response.Cookies.Add(cookie);

LblBilgi.Text="<b>Cookie Yaratıldı…<b/><br/><br/>";
LblBilgi.Text="Yeni Kullanıcı "+cookie["Name"];

}  
}
}

 

 

 

Yukarıdaki kodun oluşturduğu uygulama resimdeki şekildedir.Sayfayı daha önce çalıştırdığım için bilgisayarımda cookie yaratılmıştı.Siz de yarattıktan sonra manuel olarak cookieyi silin,sayfayı çalıştırın sayfadaki yazınız değişecek. 3. makalemzide görüşmek üzere…..

 

Bookmark and Share

Post a Comment

Subscribe without commenting