Session’ın kelime anlamı oturumdur.Her hangi bir ziyaretçi sitemize ilk girdiği anda, o ziyaretçiyle ilgili Session başlatılmış olur.Ziyaretçimizle ilgili bir bilginin başka bir sayfada elde edilmesini istiyorsak Sessionları kullanabiliriz.Server taraflı çalışan Sessionlar, bir sayfada aldıkları bilgileri diğer sayfada kaybetmezler.Session değerlerini sayfalar arasında taşımamıza gerek yoktur.O bilgiler oturum aktif olduğu sürece hafızada kalırlar.Ziyaretçi sayfalarımızı dolaşırken oluşturulan Session nesnesi, ya bizim belirleyeceğimiz ya da önceden sunucu tarafından belirlenen zaman aşılınca sona erer.
Şimdi Default.aspx ve Deneme.aspx adında iki sayfa hazırlayalım.Default.aspx sayfasında birer TextBox ve Button nesneleri olsun.Button nesnesine tıklandığı zaman TextBox’a yazılan değer, oluşturulacak Session nesnesine aktarılsın ve Deneme.aspx sayfasında Session’a yazılan bu değeri okuyalım.
---Default.aspx---
protected void Button1_Click(object sender, EventArgs e)
{
Session.Add("Deger", TextBox1.Text);
}
---Deneme.aspx---
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session["Deger"].ToString());
}
Eğer TextBox’ımıza “Gençay” değerini girip Button nesnemize tıklarsak, ardından Deneme.aspx sayfasını açarsak karşımızda “Gençay” yazdığını göreceğiz.Default.aspx ve Deneme.aspx sayfaları arasında bir veri taşımasında uğraşmadığımız halde Session nesnesi TextBox’a girilen değeri taşımamıza yardımcı oldu.
Şimdi şöyle bir soru sorabilirsiniz.”Server’da bir tane Session nesnesi oluşturuluyorsa eğer, Ahmet ile Zeynep aynı anda siteye ziyaretçi olduklarında ve TextBox’a “Ahmet” veya “Zeynep” yazdıklarında Session nesnesinin değeri sürekli değişmeyecek mi? 🙂 Yani Ahmetin Session bilgileri Zeynepte ya da tam tersi durum, Zeynep’in Session bilgileri Ahmet’te gözükme olasılığı yok mu? “. Tabi siz soruyu daha kısa şekilde sorabilirsiniz 🙂
Bu sorunun cevabı hayır yok.Çünkü, SessionID özelliği sayesinde sunucu, iletişim içierinde olduğu istemcileri birbirinden ayırabilir.Yani, bir web sitesinden talepte bulunan binlerce kullanıcıyı birbirinden ayırt etmek için SessionID özelliği kullanılır.Sunucu istemciye(client) bir SessionID atar.Her istemcinin kendine özel SessionID’si olacaktır.İstemcilere atanan SessionID’yi öğrenmek için aşağıdaki kod yardımcı olacaktır.
Response.Write(Session.SessionID);
Yukarıdaki gibi SessionID öğrenilebilir.Yeni bir tarayıcı penceresi açıp aynı sayfaya yönlendirdiğimizde, yukarıdaki kodun yazdığı SessionID’nin tamamen değiştiğini göreceksiniz.
Bu yüzden dolayı Ahmet ile Zeynep’in istemcileri SessionID sayesinde aynı Session bilgilerini tutmayacaktır.
Farklı bir yol olarak aşağıdaki şekilde de kullanım yapabiliriz.
---Default.aspx---
protected void Button1_Click(object sender, EventArgs e)
{
Session["Deger"] = TextBox1.Text;
}
---Deneme.aspx---
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session["Deger"].ToString());
}
Yukarıdaki yöntemde olduğu gibi,Default.aspx sayfasında TextBox nesnesine girilen değeri Session nesnesine set edebilir ve set ettikten sonra Deneme.aspx sayfasında o değeri okuyabiliriz.
Session nesnelerinde sadece tek bilgi tuttuğumuzu zannetmeyiniz.Şimdi Default.aspx sayfasını aşağıdaki gibi düzenleyelim.
Yukarıda gördüğünüz gibi Ad ve Soyad alanlarını Default.aspx sayfasında girip, Button nesnesine tıkladığımız zaman bu değerleri Session nesnelerine kaydettirelim.Deneme.aspx sayfasında da bu Session nesnelerinin değerleri okutalım.
---Default.aspx---
protected void Button1_Click(object sender, EventArgs e)
{
Session.Add("Ad",TextBox1.Text);
//Server belleğinde, Sessionlar içinde ismi Ad olan bir Session nesnesi eklendi.
Session.Add("Soyad",TextBox2.Text);
//Server belleğinde, Sessionlar içinde ismi Soyad olan bir Session nesnesi eklendi.
}
---Deneme.aspx---
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session["Ad"].ToString());
Response.Write(Session["Soyad"].ToString());
}
Yukarıdaki kodları derleyip çalıştırdığınızda, Default.aspx sayfasında Ad ve Soyad değerlerini girip Button nesnesine tıklarsanız eğer,Deneme.aspx sayfasında girilen değerleri göreceksiniz.
Bir Session nesnesi, oturum sonlandığında iptal ediliyor.Browser’ın kapatılması sonucu ya da belirlenen bir sürenin aşılması durumda Session nesnesi iptal edilebilir.
Eğer Session nesnesinin süresi belirtilmemişse, varsayılan olarak 20 dk Session nesnesi var olacaktır.Tabi bu 20 dk, sitemize giren kullanıcının hiç bir etkinlik yapmadığı süre zarfınca geçerlidir.
Sitemize giren her kullanıcı için oluşturulacak Session nesnesinin yaşam süresini kendiniz ayarlamak istiyorsanız, TimeOut özelliğini kullanmalısınız.
—Session.TimeOut = Dakika—
Session.Timeout = 1;
//Session nesnesi 1 dakika sonra silinecektir.
Sonraki yazılarımda görüşmek üzere …
İyi çalışmalar..