أحدث البرامج التعليمية وتطوير الشبكة
 

ASP كائن جلسة


كائن الدورة يخزن المعلومات عنها، أو تغيير الإعدادات لجلسة المستخدم.


الكائن Session

عندما كنت تعمل مع التطبيق على جهاز الكمبيوتر الخاص بك، يمكنك فتحه، والقيام ببعض التغييرات، ثم تقوم بإغلاقه. هذا هو مثل الكثير من الدورة. يعرف الكمبيوتر من أنت. فهو يعرف عند فتح التطبيق وعند إغلاقه. ومع ذلك، على شبكة الإنترنت هناك مشكلة واحدة: خادم الويب لا تعرف من أنت وماذا تفعل، لأن عنوان HTTP لا تحتفظ الدولة.

ASP يحل هذه المشكلة عن طريق إنشاء ارتباط فريد لكل مستخدم. يتم إرسال ملف تعريف الارتباط جهاز الكمبيوتر الخاص بالمستخدم وأنه يحتوي على المعلومات التي تحدد للمستخدم. وهذا ما يسمى واجهة الكائن Session.

الكائن Session يخزن المعلومات عنها، أو تغيير الإعدادات لجلسة المستخدم.

المتغيرات المخزنة في الدورة على معلومات الكائن عقد حول مستخدم واحد واحد، ومتاحة لجميع الصفحات في تطبيق واحد. المعلومات المشتركة تخزينها في متغيرات جلسة هي الاسم والهوية، والأفضليات. خادم بإنشاء كائن الدورة الجديدة لكل مستخدم جديد، ويدمر الكائن Session عند انتهاء الدورة.


عندما يقوم بدء الدورة؟

تبدأ جلسة في الحالات التالية:

  • يطلب مستخدم جديد ملف ASP، ويتضمن الملف Global.asa إجراء Session_OnStart
  • يتم تخزين قيمة في متغير جلسة
  • يطلب مستخدم ملف ASP، والملف Global.asa يستخدم <object> العلامة إنشاء مثيل كائن مع نطاق جلسة

متى تنتهي جلسة؟

تنتهي جلسة إذا كان المستخدم لم يطلب أو تحديثها صفحة في التطبيق لفترة محددة. افتراضيا، وهذا هو 20 دقيقة.

إذا كنت ترغب في تعيين الفاصل الزمني للمهلة أقصر أو أطول من الافتراضي، استخدم Timeout الملكية.

على سبيل المثال يضع أقل من الفاصل الزمني للمهلة 5 دقائق:

<%
Session.Timeout=5
%>

استخدام Abandon طريقة لإنهاء جلسة عمل فورا:

<%
Session.Abandon
%>

Note: المشكلة الرئيسية مع جلسات هو عندما يجب أن ينتهي. نحن لا نعرف إذا كان الطلب الأخير المستخدم النهائي واحد أم لا. لذلك نحن لا نعرف كم من الوقت ينبغي لنا أن نضع الدورة "alive" . الانتظار وقتا طويلا لعقد جلسة الخمول تستهلك موارد على الملقم، ولكن إذا تم حذف جلسة قريبا جدا المستخدم لابد أن يبدأ من جديد لأن الخادم وحذف كافة المعلومات. يمكن العثور على الحق في الفاصل الزمني للمهلة يكون من الصعب!

Tip: تخزين كميات صغيرة فقط من البيانات في متغيرات جلسة العمل!


تخزين واسترداد متغيرات الدورة

الشيء الأكثر أهمية حول موضوع الدورة هو أنه يمكنك تخزين المتغيرات في ذلك.

المثال التالي سوف تحدد جلسة المتغير username إلى "Donald Duck" والدورة متغير age إلى "50" :

<%
Session("username")="Donald Duck"
Session("age")=50
%>

عندما يتم تخزين قيمة في متغير جلسة عمل يمكن الوصول إليها من أي صفحة في التطبيق ASP:

Welcome <%Response.Write(Session("username"))%>

السطر أعلاه من العوائد: "Welcome Donald Duck" .

يمكنك أيضا تخزين تفضيلات المستخدم في الكائن 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%>

إزالة المتغيرات الدورة

جمع المحتويات يحتوي على كافة المتغيرات الدورة.

فمن الممكن لإزالة متغير جلسة عمل مع أسلوب إزالة.

على سبيل المثال يزيل أدناه الدورة متغير "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

إذا كنت لا تعرف عدد العناصر في جمع المحتويات، يمكنك استخدام الخاصية Count:

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