مفهوم Session في ASP
Session 對象用於存儲用戶的信息。存儲於 session 對象中的變量持有單一用戶的信息,並且對於一個应用程序中的所有頁面都是可用的。
Session 對象
當您操作某個应用程序時,您打開它,做些變化,然後將它關閉。這很像是次對話(Session)。電腦知道你是誰。它清楚你在何時打開和關閉应用程序。但是在因特網上有一個問題:由於 HTTP 地址無法存留狀態,web 伺服器不知道你是誰以及你做了什麼。
ASP 通过为每位用户创建一个唯一的 cookie 的方式解决了这个问题。cookie 被传送至客户端,它含有可识别用户的信息。这种接口被称作 Session 对象。
يستخدم كائن Session لحفظ معلومات حول المستخدم، أو لتغيير إعدادات session للمستخدم. تتضمن المتغيرات المخزنة في كائن Session معلومات المستخدم الفردية، وهي متاحة لجميع الصفحات في التطبيق. تكون المعلومات المخزنة في كائن Session عادةً أسماء، ids، ومعلمات. يخلق الخادم Session جديدًا لكل مستخدم جديد، ويتم إلغاء هذا كائن Session عند انتهاء صلاحيته.}}
متى يبدأ Session؟
يبدأ Session:
- عندما يطلب مستخدم جديد ملف ASP، ويشير ملف Global.asa إلى подпрограмة Session_OnStart;
- عندما يتم حفظ قيمة في متغير Session;
- عندما يطلب مستخدم لملف ASP، ويستخدم Global.asa لتقديم كائن عبر نطاق session باستخدام علامة <object>;
متى ينتهي Session?
إذا لم يطلب المستخدم أو تحديث الصفحة في تطبيق خلال فترة زمنية محددة، فإن session سينتهي. القيمة الافتراضية هي 20 دقيقة.
إذا كنت ترغب في تعيين فترة زمنية للإعداد الزمني أطول أو أقصر، يمكنك تعيين إعداد الزمني خصائص.
في المثال التالي، تم تعيين فترة إعداد الزمني 5 دقائق:
<% Session.إعداد الزمني=5 %>
لإيقاف session فورًا، يمكنك استخدام تخلي طريقة:
<% Session.تخلي %>
ملاحظة:من المشاكل الرئيسية عند استخدام session هو تحديد وقت انتهاء حياتها. لا يمكننا معرفة ما إذا كانت آخر طلبات المستخدم كانت الطلب الأخير. لذلك، لا نعرف لمدة ما يجب أن تكون session "مستمرة". إذا انتظرت太久 لـ session العازلة، فإن ذلك قد يستنزف موارد الخادم. ومع ذلك، إذا تم حذف session مبكرًا جدًا، فإن المستخدم سيضطر إلى بدء كل شيء من جديد مرة أخرى، لأن الخادم قد حذف جميع المعلومات. العثور على فترة زمنية مناسبة للإعداد الزمني أمر صعب.
إشارة:إذا كنت تستخدم متغيرات session، فلا تحفظ الكثير من البيانات فيها.
حفظ واسترجاع متغيرات session
أحد أكبر مزايا كائن Session هو أنه يمكن فيه حفظ المتغيرات لقراءتها في صفحات لاحقة، ويتم استخدامه في نطاق واسع.
في المثال التالي، يتم تعيين "Donald Duck" لحفظها في متغير session تحت الاسم username، وتعيين "50" لحفظها في متغير session تحت الاسم age:
<% Session("اسم المستخدم")="Donald Duck" Session("العمر")=50 %>
بمجرد أن يتم حفظ القيمة في متغير session، يمكن استخدامها من قبل أي صفحة في تطبيق ASP:
مرحبًا <%Response.Write(Session("اسم المستخدم"))%>
نتيجة هذا السطر من البرنامج هو: "مرحبًا Donald Duck".
يمكنك أيضًا حفظ معاملات المستخدم في عنوان الجلسة، ثم الوصول إلى هذه المعاملات لتحديد الصفحة التي يتم عرضها للمستخدم.
في المثال التالي، إذا كان استخدام المستخدم دقة العرض المنخفض، يتم عرض نسخة النص للصفحة:
<%If Session("screenres")="low" Then%> هذه هي نسخة النص من الصفحة <%Else%> هذه هي نسخة المتعددة الوسائط من الصفحة <%End If%>
إزالة متغير الجلسة
مجموعة contents تحتوي على جميع مؤشرات الجلسة.
يمكنك استخدام طريقة remove لإزالة المتغيرات الجلسة.
في المثال التالي، إذا كان قيمة المتغير الجلسة "العمر" أقل من 18، يتم إزالة المتغير الجلسة "sale":
<% If Session.Contents("العمر")<18 then Session.Contents.Remove("sale") End If %>
إذا كنت بحاجة إلى إزالة جميع المتغيرات من الجلسة، يمكنك استخدام طريقة RemoveAll:
<% Session.Contents.RemoveAll() %>
مرور عبر مجموعة contents
مجموعة contents تحتوي على جميع مؤشرات الجلسة. يمكنك مرورها عبر مجموعة contents لمعرفة المتغيرات المخزنة فيها:
<% Session("اسم المستخدم")="Donald Duck" Session("العمر")=50 dim i For Each i in Session.Contents Response.Write(i & "<br />") Next %>
النتيجة:
اسم المستخدم العمر
إذا كنت بحاجة إلى معرفة عدد العناصر في مجموعة contents، يمكنك استخدام خاصية count:
<% dim i dim j j=Session.Contents.Count Response.Write("مؤشرات الجلسة: " & j) For i=1 to j Response.Write(Session.Contents(i) & "<br />") Next %>
النتيجة:
مؤشرات الجلسة: 2 Donald Duck 50
استكشاف StaticObjects Collection
يمكن مراجعة StaticObjects Collection من خلال الدوران عليها للتحقق من قيم جميع العناصر المخزنة في session object:
<% dim i For Each i in Session.StaticObjects Response.Write(i & "<br />") Next %>