ASP Session

WebMaster bölümünde yer alan bu konu SüKuN tarafından paylaşıldı.

  1. SüKuN

    SüKuN Harbi Aktif Üye

    HTML ve Javascript ile biraz oynadıysanız, bilirsiniz ki bir sayfadan ötekine değişken değeri aktarmak, imkansıza yakın derecede zordur. Değişkenlerin ömrü, fonksiyonla sınırlıdır. Bir ASP sayfasında herhangi bir değişkeni fonksiyon dışında tanımlamakla ve değer atamakla onu bütün fonksiyonlar için geçerli hale getirebiliriz. Fakat kimi zaman isteriz ki, bir fonksiyonun değeri bütün sayfalarda aynı olsun; ziyaretçinin sayfa değiştirmesi ile değişkenin değeri değişmesin. Bunu ASP'de yapmak çok kolaydır. ASP'de bu zorluğu yenebilmek için değişkenlerimizi Session nesnesi için oluşturabiliriz; ve bu değer ziyaretçinin oturumu boyunca devam eder; bütün ASP sayfalarındaki bütün Fonksiyonlar tarafından bilinebilir. Örneğin:
    Session ("Tupras") = 44500

    Session Türkçe oturum demektir. ASP'nin özelliği artık bildiğinizi varsayıyorum. ASP Sunucusu Server'a bağlanan, yani bir talepte (Request'de( bulunan her bir ziyaretçiye ayrı bir oturum ayrı bir session açar. Tabii Cookie denetimi yoksa... Ve her Session'a bir ID verir...

    Session'ın en büyük özelliği dinamik olmasıdır. Yani ziyaretçinin sitede bulunduğu her saniye Session nesnesi tarafından takibe alınır... Bu sayede eğer gerçekten profesyonel planlamalar yaparken Session nesnesinin metotlarından bir çok şekilde faydalanacağız...

    Session nesnemizin en büyük özelliği tanımladığımız değişkenleri diğer geçiş sayfalarında da kullanabilmemiz için tutmasıdır... Hemen bir örnek yaparak Session nesnemize giriş yapalım... Önce Bir Form Hazırlayalım ve bu formu Session.asp diye kaydedelim.

    <FORM NAME="formadi" ACTION="SessionDevam.asp" METHOD="POST" >
    Lütfen Adınızı Giriniz:
    <INPUT TYPE="text" NAME="Isim">
    <BR>
    Soyadınız:
    <INPUT TYPE="text" NAME="Soyad">
    <BR>
    <INPUT TYPE="submit" NAME="cmdGonder" VALUE="Gönder">
    </FORM>


    .Aşağıdaki Kodları da SessionDevam.asp adıyla kaydedelim

    <%@ Language=VBScript Codepage="1254"%>

    <%
    Session.Timeout=15
    'Oturum süresi, eğer sayfaya hiç bir müdahalede bulunulmazsa 15 'dakikadır.
    Session ("Isim")=Request.Form("Isim")
    Session ("Soyad")=Request.Form("Soyad")
    'Bir önceki sayfadan
    'taşıdığımız değeri Request metoduyla Oturumda tutuyoruz.

    Dim Icerik
    Dim IcerikSonu
    %>

    <%
    IcerikSonu=Session.Contents.Count
    For Icerik=1 To IcerikSonu 'Session nesnemizde tuttuğumuz değerleri
    'Session.Contents yardımıyla saydırıyoruz.

    Response.Write (Session.Contents(Icerik) &"<br>")
    'Sonucu sayfaya Response ederek yazdırıyoruz. Ve bir <br> yani
    'Break Line koyarak (Alt satıra Geçmemizi sağlar.) Next yordamıyla
    'sıradaki Kayıtları ekrana yazdırmasını sağlıyoruz...
    Next
    %>


    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 %>

    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 %>

    Session Abandon:

    Abandon yöntemi, bir Session nesnesinde saklı olan tüm nesneleri yok eder ve kaynaklarını bırakır.

    Abandon yöntemini çağırmak istemiyorsanız, sunucu bu nesneleri oturumun süresi bittiğinde yok eder.

    Kullanımı:

    Session.Abandon

    Abandon yöntemi çağrıldığında, geçerli Session nesnesi silinme için havuza alınır, ancak geçerli sayfadaki komut dosyası komutlarının tümü işlenmeden tam olarak silinmez.

    Böylece, sonraki Web sayfaları dışında, yalnızca Abandon yönteminin çağrıldığı sayfadaki Session nesnesinde saklı olan değişkenlere erişebilirsiniz.

    Örneğin, aşağıdaki komut dosyasında üçüncü satır Oğuz değerini yazar. Bu, sunucu komut dosyasının işlenmesini bitirene kadar Session nesnesinin yok edilmemesinden dolayıdır.

    <%
    Session.Abandon
    Session("Isim") = "Oğuz"
    Reponse.Write(Session("Isim"))
    %>


    Sonraki Web sayfalarında Isim değişkenine erişirseniz, değerinin boş olduğunu göreceksiniz.
    Bunun nedeni, Isim değişkeninin, yukarıdaki işlemi bitirdiğinde önceki Session.Abandon nesnesiyle yok edilmesidir.

    Server, bir oturumu kapattıktan sonra başka bir Web sayfasını açtığınızda, yeni bir Session nesnesi oluşturur. Değişkenleri ve nesneleri, bu yeni Session nesnesinde saklayabilirsiniz.
    Aşağıdaki örnek, sunucu geçerli sayfayı çalıştırmayı bitirdiğinde oturumun son durumunu verir.

    <% Session.Abandon %>