SESSION NESNESI
ASP ile hazırlanan dinamik sayfalarda en çok kullanılan Server nesnelerinden biride “session” dır. Ne olduğu konusunda kısa bir bilgi vericek olursak; Her bir ziyaretçinin sitenizi ziyaret etmesi bir session (oturum) doğurur.
Bu sayede kod içinde gerçekleşen olayları tek bir kişi bazına indirgiyebiliriz.
Basit bir örnek vericek olursak; Diyelim ki kullanıcıdan girişte kullanıcı adı ve password yazmasını istiyorsunuz. ışte bu bilgileri session nesnesinde saklarsak site boyunca her sayfada kullanabiliriz.
Nasılmı;
<% session("user") = request.form("user") session("Password") = request.form("password") %>
Kullanıcının girdiği ad ve şifre “user ve password” adlı session değişkenlerinde saklandı.
Artık kullanıcının oturumu boyunca bu değişkenleri istediğiniz gibi kullanabilirsiniz.
<% response.write "Kullanıcı Adınız:"& session("user") & " " response.write "şifreniz:"& session("password") %>
Aşağıda ki session nesnesiyle ilgili kodları incelersek herşey daha anlaşılır olacaktır.
sessionID
Sitenizi ziyaret eden her bir kullanıcıya ayrı bir oturum ID’ si verilir. Verilen bu ID’ yi sessionID ile alabiliriz ve sitemizdeki kullanıcıları sadece o an için bu ID’yi kullanarak ayırabiliriz.
Kullanıcı oturumunu sonlandırıp yeniden bağlandığında yeni bir ID verileceğinden sürekli bir ayraç olarak kullanmamız mümkün değildir.
ÖRNEK:
<% response.write "Oturum ID' niz :" & session.sessionID %>
şeklinde.
Abondon
Abandon ile istediğiniz an ziyaretçinin oturumunu sonlandırabilirsiniz. Diyelim ki sitenize bağlanan kişilere belli yetkiler vererek sitenizin belli bölümlerine girmesini sağlamak istiyorsunuz. Bu kastettiğim özellikle şirket içi intranet uygulamalarında geçerli olabilir.
Örnek olarak ;
Çalışanların şirket içi yayınlanan bir sitede o an için sorumlu bulunduğu projeyi tanımlaması ve projenin akış durumunu belirtmesi. Proje yöneticisinin ise farklı bir yetki ile sorumlu bulunduğu projelerin tamamının gidişatını buradan izlemesi gibi.
Belirttiğim bu örnekte farklı yetkilerde kullanıcılar bulunmakta. Burada yetkisiz bir kullanıcının giriş yaptığını fark ettiğiniz anda o kullanıcının oturumunu sonlandırabilirisiniz.
Böylece eğer herhangi bir noktada kod açığı yaptıysanız bunun önüne geçebilirsiniz.
ÖRNEK 1 :
<%
if (session("user")<>“Admin”) then
session.Abandon
else
response.redirect(“kokpit.asp”)
end if
%>
ÖRNEK 2 :
<%
response.write "Oturum ID' niz " & session.sessionID
response.write "Ekranda altaki yazıyı göremiyeceksiniz"
session.Abandon
response.write "Bu yazıyı ancak kodda görebilirsiniz"
%>
Session Timeout:
Kullanıcı bir uygulamadaki bir sayfayı belirli bir süre istemez ya da yenilemezse, oturum otomatik olarak sona erer. Bu süre için varsayılan değer 20 dakikadır. Bir uygulama için varsayılan değeri, Internet Information Service çalışma ekindeki Uygulama Seçenekleri özellik sayfasında değiştirebilirsiniz.
<% Session.Timeout = 16 %>
EnableSessionState
ssion nesnesinin aktif olduğu her bir sayfa sunucuya ek yük bindirmektedir. Bu yüzden Session nesnesine ihtiyacımız yok ise bu özelliği pasif konuma getirmekte fayda vardır
Bir ASP sayfasını oturum açmadan yapılandırmak için alttaki kodu ekleyebilirsiniz.. Değerini True yaparak başka bir sayfada oturumu başlatabilirsiniz…
<%@ EnableSessionState=False %>
Bazı durumlarda Session nesnesine sadece okuma amaçlı ihtiyaç duyabiliriz, bu durumda da Session nesnesine sadece okuma amaçlı erişeceğimizi sayfada bildirerek belli ölçüde performans kazanabiliriz.
Aynı şekilde Session nesnesini sadece okunabilir yapmak için için EnableSessionState = ReadOnly yazmak yeterli olacaktır.