ASP Session
Session obyekti foydalanuvchi sessiyasi haqidagi ma’lumotlarni saqlaydi yoki uning sozlamalarini o‘zgartiradi.
Session obyekti
Kompyuteringizdagi biror ilova bilan ishlaganingizda uni ochasiz, ba’zi o‘zgarishlar kiritasiz, so‘ng yopasiz. Bu xuddi sessiyaga o‘xshaydi. Kompyuter kimligingizni biladi. U ilovani qachon ochganingizni va qachon yopganingizni biladi. Biroq internetda bitta muammo bor: veb-server kimligingizni va nima qilayotganingizni bilmaydi, chunki HTTP manzil holatni saqlamaydi.
ASP bu muammoni har bir foydalanuvchi uchun noyob cookie yaratish orqali hal qiladi. Cookie foydalanuvchi kompyuteriga yuboriladi va unda foydalanuvchini aniqlaydigan ma’lumotlar bo‘ladi. Bu interfeys Session obyekti deb ataladi.
Session obyekti foydalanuvchi sessiyasi haqidagi ma’lumotlarni saqlaydi yoki uning sozlamalarini o‘zgartiradi.
Session obyektida saqlangan o‘zgaruvchilar bitta foydalanuvchi haqidagi ma’lumotlarni saqlaydi va bitta ilovadagi barcha sahifalar uchun mavjud bo‘ladi. Sessiya o‘zgaruvchilarida odatda ism, id va foydalanuvchi afzalliklari saqlanadi. Server har bir yangi foydalanuvchi uchun yangi Session obyektini yaratadi va sessiya muddati tugaganda Session obyektini yo‘q qiladi.
Sessiya qachon boshlanadi?
Sessiya quyidagi hollarda boshlanadi:
- Yangi foydalanuvchi ASP faylini so‘raganda va Global.asa faylida Session_OnStart protsedurasi bo‘lganda
- Sessiya o‘zgaruvchisiga qiymat saqlanganda
- Foydalanuvchi ASP faylini so‘raganda va Global.asa fayli sessiya ko‘rinish sohasiga (scope) ega obyekt nusxasini yaratish uchun <object> tegidan foydalanganda
Sessiya qachon tugaydi?
Agar foydalanuvchi belgilangan vaqt davomida ilovadagi sahifani so‘ramasa yoki yangilamasa, sessiya tugaydi. Standart holatda bu vaqt 20 daqiqa.
Agar standartdagidan qisqaroq yoki uzunroq kutish vaqti (timeout) oralig‘ini belgilamoqchi bo‘lsangiz, Timeout xususiyatidan foydalaning.
Quyidagi misol kutish vaqti oralig‘ini 5 daqiqaga belgilaydi:
<%
Session.Timeout=5
%>
Sessiyani darhol tugatish uchun Abandon metodidan foydalaning:
<%
Session.Abandon
%>
Eslatma: Sessiyalar bilan bog‘liq asosiy muammo — ular QACHON tugashi kerakligi. Foydalanuvchining oxirgi so‘rovi haqiqatan ham oxirgisi bo‘lganmi yoki yo‘qmi, bilmaymiz. Shuning uchun sessiyani qancha vaqt "tirik" saqlash kerakligini ham bilmaymiz. Faol bo‘lmagan sessiyani juda uzoq kutish serverdagi resurslarni sarflaydi, lekin sessiya juda erta o‘chirilsa, foydalanuvchi hammasini boshidan boshlashiga to‘g‘ri keladi, chunki server barcha ma’lumotlarni o‘chirib yuborgan bo‘ladi. To‘g‘ri kutish vaqti oralig‘ini topish qiyin bo‘lishi mumkin!
Maslahat: Sessiya o‘zgaruvchilarida faqat KICHIK hajmdagi ma’lumotlarni saqlang!
Sessiya o‘zgaruvchilarini saqlash va olish
Session obyektining eng muhim jihati — unda o‘zgaruvchilarni saqlash mumkin.
Quyidagi misol username sessiya o‘zgaruvchisiga "Donald Duck" qiymatini, age sessiya o‘zgaruvchisiga esa "50" qiymatini beradi:
<%
Session("username")="Donald Duck"
Session("age")=50
%>
Qiymat sessiya o‘zgaruvchisida saqlangach, unga ASP ilovasidagi ISTALGAN sahifadan murojaat qilish mumkin:
Welcome <%Response.Write(Session("username"))%>
Yuqoridagi qator "Welcome Donald Duck" natijasini qaytaradi.
Shuningdek, foydalanuvchi afzalliklarini Session obyektida saqlab, so‘ng foydalanuvchiga qaysi sahifani qaytarishni tanlash uchun shu afzallikdan foydalanishingiz mumkin.
Quyidagi misol, agar foydalanuvchining ekran ruxsati past bo‘lsa, sahifaning faqat matndan iborat versiyasini belgilaydi:
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
Sessiya o‘zgaruvchilarini o‘chirish
Contents kolleksiyasi barcha sessiya o‘zgaruvchilarini o‘z ichiga oladi.
Sessiya o‘zgaruvchisini Remove metodi yordamida o‘chirish mumkin.
Quyidagi misol "age" sessiya o‘zgaruvchisining qiymati 18 dan kichik bo‘lsa, "sale" sessiya o‘zgaruvchisini o‘chiradi:
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
Sessiyadagi barcha o‘zgaruvchilarni o‘chirish uchun RemoveAll metodidan foydalaning:
<%
Session.Contents.RemoveAll()
%>
Contents kolleksiyasi bo‘ylab sikl
Contents kolleksiyasi barcha sessiya o‘zgaruvchilarini o‘z ichiga oladi. Unda nimalar saqlanganini ko‘rish uchun Contents kolleksiyasini sikl yordamida aylanib chiqishingiz mumkin:
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
Natija:
username
age
Agar Contents kolleksiyasidagi elementlar sonini bilmasangiz, Count xususiyatidan foydalanishingiz mumkin:
<%
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
%>
Natija:
Session variables: 2
Donald Duck
50
StaticObjects kolleksiyasi bo‘ylab sikl
Session obyektida saqlangan barcha obyektlarning qiymatlarini ko‘rish uchun StaticObjects kolleksiyasini sikl yordamida aylanib chiqishingiz mumkin:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
