ASP Session Object
စက်ရှင်အရာဝတ္တုတစ်ခုသည် အသုံးပြုသူစက်ရှင်အတွက် ဆက်တင်များအကြောင်း အချက်အလက်များကို သိမ်းဆည်းသည် သို့မဟုတ် ပြောင်းလဲခြင်း
Session ရှိကြပါတယ်။
သင့်ကွန်ပြူတာရှိ အက်ပလီကေးရှင်းတစ်ခုနှင့် အလုပ်လုပ်သည့်အခါ ၎င်းကိုဖွင့်ပါ၊ အပြောင်းအလဲအချို့ပြုလုပ်ပြီးနောက် ၎င်းကိုပိတ်လိုက်ပါ။ ဒါက Session တစ်ခုလိုပါပဲ။ ကွန်ပျူတာက မင်းဘယ်သူလဲဆိုတာ သိတယ်။ အပလီကေးရှင်းကိုဖွင့်သည့်အခါနှင့် ၎င်းကိုပိတ်သည့်အခါ သိနိုင်သည်။ သို့သော်၊ အင်တာနက်ပေါ်တွင် ပြဿနာတစ်ခုရှိနေသည်- အဘယ်ကြောင့်ဆိုသော် HTTP လိပ်စာသည် အခြေအနေကို မထိန်းသိမ်းနိုင်သောကြောင့် ဝဘ်ဆာဗာမှ သင်မည်သူဖြစ်သည်နှင့် သင်ဘာလုပ်နေသည်ကို မသိပါ။
ASP သည် အသုံးပြုသူတိုင်းအတွက် သီးသန့် cookie တစ်ခုကို ဖန်တီးခြင်းဖြင့် ဤပြဿနာကို ဖြေရှင်းပေးပါသည်။ ကွတ်ကီးကို အသုံးပြုသူ၏ ကွန်ပျူတာသို့ ပေးပို့ထားပြီး ၎င်းတွင် အသုံးပြုသူကို ခွဲခြားသတ်မှတ်သည့် အချက်အလက်များ ပါဝင်ပါသည်။ ဤ interface ကို Session object ဟုခေါ်သည်။
စက်ရှင်အရာဝတ္တုသည် အသုံးပြုသူစက်ရှင်အတွက် ဆက်တင်များအကြောင်း အချက်အလက်များကို သိမ်းဆည်းသည် သို့မဟုတ် ပြောင်းလဲခြင်း။
Session object တစ်ခုတွင် သိမ်းဆည်းထားသော ကိန်းရှင်များသည် သုံးစွဲသူတစ်ဦးတည်း၏ အချက်အလက်ကို သိမ်းဆည်းထားပြီး အပလီကေးရှင်းတစ်ခုရှိ စာမျက်နှာအားလုံးတွင် ရရှိနိုင်ပါသည်။ စက်ရှင်ကိန်းရှင်များတွင် သိမ်းဆည်းလေ့ရှိသော အချက်အလက်များမှာ အမည်၊ အိုင်ဒီနှင့် စိတ်ကြိုက်ရွေးချယ်မှုများဖြစ်သည်။ ဆာဗာသည် အသုံးပြုသူအသစ်တစ်ဦးစီအတွက် Session အရာဝတ္ထုအသစ်တစ်ခုကို ဖန်တီးပြီး စက်ရှင်သက်တမ်းကုန်ဆုံးသည့်အခါ Session အရာဝတ္ထုကို ဖျက်ဆီးသည်။
Session က ဘယ်တော့စမလဲ။
စက်ရှင်တစ်ခု စတင်သည့်အခါ-
- အသုံးပြုသူအသစ်သည် ASP ဖိုင်ကို တောင်းဆိုနေပြီး Global.asa ဖိုင်တွင် Session_OnStart လုပ်ထုံးလုပ်နည်းတစ်ခု ပါဝင်သည်
- တန်ဖိုးတစ်ခုကို Session variable တွင် သိမ်းဆည်းထားသည်။
- အသုံးပြုသူတစ်ဦးက ASP ဖိုင်ကို တောင်းဆိုထားပြီး Global.asa ဖိုင်သည် စက်ရှင်နယ်ပယ်ဖြင့် အရာဝတ္ထုတစ်ခုကို ချက်ချင်းလုပ်ဆောင်ရန် <object> တက်ဂ်ကို အသုံးပြုသည်။
Session ဘယ်အချိန်မှာ ပြီးဆုံးမလဲ။
သတ်မှတ်ထားသောကာလတစ်ခုအတွက် အသုံးပြုသူသည် အပလီကေးရှင်းရှိ စာမျက်နှာတစ်ခုကို တောင်းဆိုခြင်း သို့မဟုတ် ပြန်လည်စတင်ခြင်းမပြုပါက စက်ရှင်တစ်ခု ပြီးဆုံးပါသည်။ ပုံမှန်အားဖြင့်၊ ၎င်းသည် မိနစ် 20 ဖြစ်သည်။
ပုံမှန်အချိန်ထက် ပိုတို သို့မဟုတ် ပိုရှည်သော အချိန်ကုန်ချိန်ကို သတ်မှတ်လိုပါက၊ Timeout ပိုင်ဆိုင်မှုကို အသုံးပြုပါ။
အောက်ဖော်ပြပါ ဥပမာသည် အချိန်ကုန်ဆုံးချိန်ကို 5 မိနစ် သတ်မှတ်ပေးသည်-
<%
Session.Timeout=5
%>
စက်ရှင် တစ်ခုကိုချက်ချင်းအဆုံးသတ်ရန် Abandon နည်းလမ်းကို သုံးပါ -
<%
Session.Abandon
%>
မှတ်ချက်- ဆက်ရှင်များ ၏ အဓိက ပြဿနာမှာ ၎င်းတို့ ပြီးဆုံးသင့်သည့် အချိန်ဖြစ်သည်။ အသုံးပြုသူ၏ နောက်ဆုံးတောင်းဆိုချက်မှာ နောက်ဆုံးတောင်းဆိုချက် ဟုတ်မဟုတ် ကျွန်ုပ်တို့ မသိပါ။ ထို့ကြောင့် ကျွန်ုပ်တို့သည် session "ရှင်သန်ခြင်း" ကို မည်မျှကြာအောင်ထားရမည်ကို ကျွန်ုပ်တို့မသိပါ။ ရပ်နားချိန်တစ်ခုအတွက် အချိန်အကြာကြီးစောင့်ဆိုင်းခြင်းသည် ဆာဗာပေါ်တွင် ရင်းမြစ်များကို အသုံးပြုသော်လည်း စက်ရှင်ကို ဖျက်လိုက်လျှင် ဆာဗာသည် အချက်အလက်အားလုံးကို ဖျက်လိုက်သောကြောင့် အသုံးပြုသူသည် ပြန်လည်စတင်ရမည်ဖြစ်ပါသည်။ မှန်ကန်သော timeout ကြားကာလကို ရှာဖွေရန် ခက်ခဲနိုင်သည်။
အကြံပြုချက်- session variable များတွင် ဒေတာပမာဏ အနည်းငယ်ကိုသာ သိမ်းဆည်းပါ။
Session Variables များကို သိမ်းဆည်းပြီး ပြန်လည်ရယူပါ။
Session object ၏ အရေးကြီးဆုံးအချက်မှာ ၎င်းတွင် variable များကို သိမ်းဆည်းထားနိုင်ခြင်းဖြစ်သည်။
အောက်ဖော်ပြပါ ဥပမာသည် Session variable username အား "Donald Duck" နှင့် Session variable age ကို "50" သို့ သတ်မှတ်ပေးလိမ့်မည်-
<%
Session("username")="Donald Duck"
Session("age")=50
%>
တန်ဖိုးကို session variable တွင်သိမ်းဆည်းသောအခါ ASP အပလီကေးရှင်းရှိမည်သည့်စာမျက်နှာမှရောက်ရှိနိုင်သည်-
Welcome <%Response.Write(Session("username"))%>
အပေါ်က စာကြောင်းက "Welcome Donald Duck" လို့ ပြန်လာပါတယ်။
သင်သည် Session object တွင် အသုံးပြုသူဦးစားပေးချက်များကိုလည်း သိမ်းဆည်းနိုင်ပြီး အသုံးပြုသူထံသို့ ပြန်သွားမည့် စာမျက်နှာကို ရွေးချယ်ရန် ထိုဦးစားပေးကို ဝင်ရောက်ကြည့်ရှုနိုင်ပါသည်။
အသုံးပြုသူသည် မျက်နှာပြင် ရုပ်ထွက်နိမ့်ပါက စာမျက်နှာ၏ စာသားသီးသန့်ဗားရှင်းကို အောက်ပါဥပမာတွင် သတ်မှတ်ပေးသည်-
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
Session Variable များကို ဖယ်ရှားပါ။
အကြောင်းအရာများ စုစည်းမှုတွင် စက်ရှင် ကိန်းရှင်အားလုံး ပါဝင်ပါသည်။
Remove method ဖြင့် session variable ကို ဖယ်ရှားနိုင်သည်။
session variable "age" ၏တန်ဖိုးသည် 18 ထက်နိမ့်ပါက၊ session variable "sale" ကို အောက်ဖော်ပြပါ ဥပမာသည် ဖယ်ရှားသည်-
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
စက်ရှင်တစ်ခုရှိ ကိန်းရှင်အားလုံးကို ဖယ်ရှားရန် RemoveAll နည်းလမ်းကို အသုံးပြုပါ-
<%
Session.Contents.RemoveAll()
%>
အကြောင်းအရာများစုစည်းမှုမှတဆင့် လှည့်ပတ်ပါ။
အကြောင်းအရာများ စုစည်းမှုတွင် စက်ရှင် ကိန်းရှင်အားလုံး ပါဝင်ပါသည်။ ၎င်းတွင် သိမ်းဆည်းထားသည်များကို ကြည့်ရှုရန် Contents စုစည်းမှုမှတဆင့် လှည့်ပတ်ကြည့်ရှုနိုင်သည်-
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
ရလဒ်:
username
age
အကြောင်းအရာများ စုစည်းမှုတွင် အကြောင်းအရာ အရေအတွက်ကို မသိပါက၊ Count property ကို သုံးနိုင်သည်-
<%
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
%>
ရလဒ်:
Session variables: 2
Donald Duck
50
StaticObjects Collection မှတဆင့် လှည့်ပတ်ပါ။
Session အရာဝတ္တုတွင် သိမ်းဆည်းထားသော အရာဝတ္ထုအားလုံး၏ တန်ဖိုးများကို ကြည့်ရှုရန် StaticObjects စုစည်းမှုမှတဆင့် သင်လှည့်ပတ်နိုင်သည်-
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>