ASP Oturum Nesnesi
Bir Oturum nesnesi, bir kullanıcı oturumu hakkında bilgi depolar veya bir kullanıcı oturumu için ayarları değiştirir.
Oturum nesnesi
Bilgisayarınızda bir uygulama ile çalışırken onu açıyorsunuz, bazı değişiklikler yapıyorsunuz ve sonra kapatıyorsunuz. Bu, bir Oturuma çok benzer. Bilgisayar senin kim olduğunu biliyor. Uygulamayı ne zaman açacağınızı ve ne zaman kapatacağınızı bilir. Ancak internette bir sorun var: HTTP adresi durumu korumadığı için web sunucusu kim olduğunuzu ve ne yaptığınızı bilmiyor.
ASP, her kullanıcı için benzersiz bir tanımlama bilgisi oluşturarak bu sorunu çözer. Çerez, kullanıcının bilgisayarına gönderilir ve kullanıcıyı tanımlayan bilgileri içerir. Bu arayüze Session nesnesi denir.
Oturum nesnesi, bir kullanıcı oturumu hakkında bilgi depolar veya bir kullanıcı oturumu için ayarları değiştirir.
Bir Session nesnesinde depolanan değişkenler, tek bir kullanıcı hakkındaki bilgileri tutar ve tek bir uygulamada tüm sayfalar tarafından kullanılabilir. Oturum değişkenlerinde depolanan genel bilgiler ad, kimlik ve tercihlerdir. Sunucu, her yeni kullanıcı için yeni bir Oturum nesnesi oluşturur ve oturum sona erdiğinde Oturum nesnesini yok eder.
Oturum ne zaman başlar?
Bir oturum şu durumlarda başlar:
- Yeni bir kullanıcı bir ASP dosyası ister ve Global.asa dosyası bir Session_OnStart prosedürü içerir.
- Bir Session değişkeninde bir değer saklanır
- Bir kullanıcı bir ASP dosyası ister ve Global.asa dosyası, bir nesneyi oturum kapsamıyla başlatmak için <object> etiketini kullanır.
Bir Oturum Ne Zaman Biter?
Bir kullanıcı, belirli bir süre boyunca uygulamadaki bir sayfayı talep etmemiş veya yenilememişse oturum sona erer. Varsayılan olarak, bu 20 dakikadır.
Varsayılandan daha kısa veya daha uzun bir zaman aşımı aralığı ayarlamak istiyorsanız, Zaman Aşımı özelliğini kullanın.
Aşağıdaki örnek, 5 dakikalık bir zaman aşımı aralığı belirler:
<%
Session.Timeout=5
%>
Bir oturumu hemen sonlandırmak için Abandon yöntemini kullanın :
<%
Session.Abandon
%>
Not: Oturumlarla ilgili temel sorun, NE ZAMAN sona ermeleri gerektiğidir. Kullanıcının son isteğinin son isteği olup olmadığını bilmiyoruz. Bu yüzden seansı ne kadar "canlı" tutmamız gerektiğini bilmiyoruz. Boşta bir oturum için çok uzun süre beklemek sunucudaki kaynakları tüketir, ancak oturum çok erken silinirse, sunucu tüm bilgileri sildiği için kullanıcının baştan başlaması gerekir. Doğru zaman aşımı aralığını bulmak zor olabilir!
İpucu: Oturum değişkenlerinde yalnızca KÜÇÜK miktarda veri depolayın!
Oturum Değişkenlerini Sakla ve Al
Session nesnesiyle ilgili en önemli şey, içinde değişkenleri saklayabilmenizdir.
Aşağıdaki örnek, Oturum değişkeni kullanıcı adını "Donald Duck" ve Oturum değişkeni yaşını "50" olarak ayarlayacaktır:
<%
Session("username")="Donald Duck"
Session("age")=50
%>
Değer bir oturum değişkeninde depolandığında, ASP uygulamasındaki HERHANGİ bir sayfadan erişilebilir:
Welcome <%Response.Write(Session("username"))%>
Yukarıdaki satır şunu döndürür: "Hoş Geldiniz Donald Duck".
Ayrıca, kullanıcı tercihlerini Oturum nesnesinde saklayabilir ve ardından kullanıcıya hangi sayfanın döndürüleceğini seçmek için bu tercihe erişebilirsiniz.
Aşağıdaki örnek, kullanıcının ekran çözünürlüğü düşükse sayfanın salt metin sürümünü belirtir:
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
Oturum Değişkenlerini Kaldır
Contents koleksiyonu tüm oturum değişkenlerini içerir.
Remove yöntemi ile bir oturum değişkenini kaldırmak mümkündür.
Aşağıdaki örnek, "yaş" oturum değişkeninin değeri 18'den küçükse "satış" oturum değişkenini kaldırır:
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
Bir oturumdaki tüm değişkenleri kaldırmak için RemoveAll yöntemini kullanın:
<%
Session.Contents.RemoveAll()
%>
İçerik Koleksiyonunda Döngü
Contents koleksiyonu tüm oturum değişkenlerini içerir. İçinde nelerin saklandığını görmek için İçindekiler koleksiyonunda dolaşabilirsiniz:
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
Sonuç:
username
age
Contents koleksiyonundaki öğelerin sayısını bilmiyorsanız Count özelliğini kullanabilirsiniz:
<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
Response.Write(Session.Contents(i) & "<br>")
Next
%>
Sonuç:
Session variables: 2
Donald Duck
50
StaticObjects Koleksiyonunda Döngü
Session nesnesinde depolanan tüm nesnelerin değerlerini görmek için StaticObjects koleksiyonunda dolaşabilirsiniz:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>