كائن جلسة ASP
يقوم كائن الجلسة بتخزين معلومات حول أو تغيير الإعدادات لجلسة مستخدم.
كائن الجلسة
عندما تعمل مع تطبيق على جهاز الكمبيوتر الخاص بك ، تقوم بفتحه وإجراء بعض التغييرات ثم إغلاقه. هذا يشبه إلى حد كبير الجلسة. الكمبيوتر يعرف من أنت. إنه يعرف متى تفتح التطبيق ومتى تغلقه. ومع ذلك ، هناك مشكلة واحدة على الإنترنت: خادم الويب لا يعرف من أنت وماذا تفعل ، لأن عنوان HTTP لا يحتفظ بالحالة.
يحل ASP هذه المشكلة عن طريق إنشاء ملف تعريف ارتباط فريد لكل مستخدم. يتم إرسال ملف تعريف الارتباط إلى كمبيوتر المستخدم ويحتوي على معلومات تحدد هوية المستخدم. هذه الواجهة تسمى كائن Session.
يقوم كائن Session بتخزين معلومات حول أو تغيير الإعدادات لجلسة مستخدم.
تحتوي المتغيرات المخزنة في كائن Session على معلومات حول مستخدم واحد ، وهي متاحة لجميع الصفحات في تطبيق واحد. المعلومات الشائعة المخزنة في متغيرات الجلسة هي الاسم والمعرف والتفضيلات. يقوم الخادم بإنشاء كائن Session جديد لكل مستخدم جديد ، ويتخلص من كائن Session عند انتهاء صلاحية الجلسة.
متى تبدأ الجلسة؟
تبدأ الجلسة عندما:
- يطلب مستخدم جديد ملف ASP ، ويتضمن الملف Global.asa إجراء Session_OnStart
- يتم تخزين القيمة في متغير الجلسة
- يطلب المستخدم ملف ASP ، ويستخدم الملف Global.asa علامة <object> لإنشاء مثيل لكائن بنطاق جلسة
متى تنتهي الجلسة؟
تنتهي الجلسة إذا لم يطلب المستخدم أو يحدّث صفحة في التطبيق لفترة محددة. بشكل افتراضي ، هذه 20 دقيقة.
إذا كنت تريد تعيين فاصل زمني أقصر أو أطول من الافتراضي ، فاستخدم خاصية المهلة .
يعيّن المثال أدناه مهلة زمنية مدتها 5 دقائق:
<%
Session.Timeout=5
%>
استخدم طريقة التخلي لإنهاء الجلسة على الفور:
<%
Session.Abandon
%>
ملاحظة: المشكلة الرئيسية في الجلسات هي متى يجب أن تنتهي. لا نعرف ما إذا كان آخر طلب للمستخدم هو الأخير أم لا. لذلك لا نعرف إلى متى يجب أن نبقي الجلسة "حية". يستخدم الانتظار لفترة طويلة لجلسة خاملة الموارد الموجودة على الخادم ، ولكن إذا تم حذف الجلسة في وقت قريب جدًا ، فيجب على المستخدم البدء من جديد لأن الخادم قام بحذف جميع المعلومات. قد يكون العثور على الفاصل الزمني المناسب للمهلة أمرًا صعبًا!
نصيحة: قم فقط بتخزين كميات صغيرة من البيانات في متغيرات الجلسة!
تخزين واسترجاع متغيرات الجلسة
أهم شيء في كائن Session أنه يمكنك تخزين المتغيرات فيه.
المثال أدناه سيعيّن اسم مستخدم متغير الجلسة على "Donald Duck" وعمر متغير الجلسة على "50":
<%
Session("username")="Donald Duck"
Session("age")=50
%>
عندما يتم تخزين القيمة في متغير جلسة يمكن الوصول إليها من أي صفحة في تطبيق ASP:
Welcome <%Response.Write(Session("username"))%>
يعود السطر أعلاه: "مرحبًا ب دونالد داك".
يمكنك أيضًا تخزين تفضيلات المستخدم في كائن Session ، ثم الوصول إلى هذا التفضيل لاختيار الصفحة التي سيتم إرجاعها إلى المستخدم.
يحدد المثال أدناه نسخة نصية فقط من الصفحة إذا كان المستخدم لديه دقة شاشة منخفضة:
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
إزالة متغيرات الجلسة
تحتوي مجموعة المحتويات على جميع متغيرات الجلسة.
من الممكن إزالة متغير جلسة باستخدام طريقة Remove.
يزيل المثال أدناه متغير الجلسة "sale" إذا كانت قيمة متغير الجلسة "age" أقل من 18:
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
لإزالة جميع المتغيرات في الجلسة ، استخدم طريقة RemoveAll:
<%
Session.Contents.RemoveAll()
%>
حلقة من خلال مجموعة المحتويات
تحتوي مجموعة المحتويات على جميع متغيرات الجلسة. يمكنك إجراء حلقة عبر مجموعة المحتويات ، لمعرفة ما تم تخزينه فيها:
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
نتيجة:
username
age
إذا كنت لا تعرف عدد العناصر في مجموعة المحتويات ، فيمكنك استخدام خاصية العدد:
<%
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
يمكنك إجراء حلقة عبر مجموعة StaticObjects لرؤية قيم جميع الكائنات المخزنة في كائن Session:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>