أولاً، .asa هو لاحقة الملف، وهو اختصار لتطبيق Active Server. يمكن لملف Global.asa إدارة كائنين متطلبين للغاية في تطبيقات ASP: التطبيق والجلسة.
إنه في الواقع ملف اختياري يمكن لكتاب البرنامج من خلاله تحديد البرامج النصية للأحداث وإعلان الكائنات بنطاق الجلسة والتطبيق. لا يتم استخدام محتويات هذا الملف للعرض للمستخدم، ولكن يتم استخدامها لتخزين معلومات الأحداث والكائنات المستخدمة عالميًا بواسطة التطبيق. يجب وضع هذا الملف في الدليل الجذر للتطبيق. يمكن أن يكون هناك ملف Global.asa واحد فقط لكل تطبيق.
المفهوم الخاطئ الأكثر شيوعًا حول ملف Global.asa هو أنه يمكن استخدامه كمكتبة للوظائف والإجراءات الفرعية شائعة الاستخدام. يمكن استخدام الملف Global.asa فقط لإنشاء مراجع الكائنات وبدء الالتقاط وإنهاء كائنات التطبيق وكائنات الجلسة.
يتم الوصول إلى الملف Global.asa بشكل أساسي استنادًا إلى الأحداث على مستوى الجلسة ويتم استدعاؤه في المواقف الثلاثة التالية:
1. عند تشغيل الحدث Application_OnStart أو Application_OnEnd.
2. عند تشغيل الحدث Session_OnStart أو Session_OnEnd.
3. عند الإشارة إلى كائن (كائن) تم إنشاء مثيل له في ملف Global.asa.
تنسيق الملف القياسي لـ Global.asa هو كما يلي:
<لغة البرنامج النصي=VBScript RUNAT=الخادم>
التطبيق الفرعي_OnStart
'Application_OnStart يتم تشغيله عندما يقوم أي عميل بزيارة الصفحة الرئيسية للتطبيق لأول مرة
نهاية الفرعية
SubSession_OnStart
'يتم تشغيلSession_OnStart عندما يقوم العميل لأول مرة بتشغيل أي صفحة في تطبيق ASP
نهاية الفرعية
SubSession_OnEnd
'Session_OnEnd يتم تشغيله عند انتهاء مهلة جلسة العميل أو الخروج من التطبيق
نهاية الفرعية
SubApplication_OnEnd
'يتم تشغيل Application_OnEnd عند إيقاف تشغيل خادم الويب الخاص بالموقع
نهاية الفرعية
</النص>
1.Session_onStart
دعونا نلقي نظرة أولاً على الكود الذي يتحكم في دخول المستخدمين إلى الصفحة:
1. Global.asa (يتم وضعه ضمن الدليل الجذر للدليل الظاهري الذي يتم تصحيح أخطائه)
<لغة البرنامج النصي=VBScript RUNAT=الخادم>
Sub Session_OnStart 'طالما قام المستخدم بتسجيل الدخول إلى هذا الموقع لأول مرة، فسوف ينتقل إلى الصفحة الرئيسية
استجابة. إعادة توجيه (http://www.vevb.com)
نهاية الفرعية
</النص>
ثم قم بتصحيح أي ملف في الدليل الظاهري الحالي، ستجد أن جميع الصفحات تنتقل إلى http://www.vevb.com/<
من خلال هذا المثال لإجبار الدخول إلى صفحة معينة، يمكنك أن تتخيل أن ذلك ضروري جدًا عندما تحتاج الصفحة الرئيسية إلى الاهتمام.
دعونا نستمر في مراقبة أحداث Session_OnStart وSession_OnEnd باستخدام مثال لعدد الأشخاص المتصلين بالإنترنت.
2.Session_onEnd
2. Global.asa (يتم وضعه ضمن الدليل الجذر للدليل الظاهري الذي يتم تصحيح أخطائه)
<لغة البرنامج النصي=VBScript RUNAT=الخادم>
Sub Application_onStart 'القيمة الأولية هي 0
التطبيق (أون لاين) = 0
نهاية الفرعية
Sub Session_onStart 'زيارات المستخدم ويتم زيادة العدد بمقدار 1
التطبيق.القفل
التطبيق (أون لاين) = التطبيق (أون لاين) + 1
التطبيق.فتح
نهاية الفرعية
Sub Session_OnEnd 'في نهاية عملية المستخدم، يتم تقليل العدد بمقدار 1 (ملاحظة: إذا لم يكن هناك برنامج حدث من هذا القبيل، فسيتم تنفيذ برنامج الوصول إلى الصفحة.)
التطبيق.القفل
التطبيق (أون لاين) = التطبيق (أون لاين) - 1
التطبيق.فتح
نهاية الفرعية
</النص>
3.online.asp
<%
إذا request.querystring(logout)=صحيح إذن
جلسة.التخلي ()
Response.end
نهاية إذا
%>
يوجد حاليًا <%=Application(OnLine)%> عبر الإنترنت
<a href=online.asp?logout=true>خروج</a>
تجد أن هناك تطبيقًا واحدًا فقط (OnLine) في هذه الصفحة، ولا يزال يشار إليه بشكل صريح. إذن من أين تأتي قيمتها؟ هذا هو المفتاح إلى الملف Global.asa. يمكنك فتح النوافذ بالتسلسل على هذا الجهاز وإجراء تصحيح الأخطاء بطريقتين: إغلاق النافذة أو الخروج.
3. استمر في التحسين
ستجد في البرنامج أعلاه أن تأثير إغلاق النافذة بعد الخروج من الاتصال يختلف عن تأثير إغلاق النافذة مباشرة. نظرًا لوجود الجلسة لفترة طويلة، لا يمكن تشغيل حدث Session_OnEnd عند إغلاق النافذة مباشرة، فكيف يمكن تحقيق هذه الفكرة شبه المستحيلة؟
كما نعلم جميعًا، عند إغلاق صفحة ويب، يمكن ربطها بحدث onunload، لذا طالما أن onunload يمكنه أداء وظيفة تسجيل الخروج للجلسة، أليس هذا ما نحتاجه؟ دون مزيد من اللغط، دعونا تعديل online.asp
3.online.asp
<%
إذا request.querystring(logout)=صحيح إذن
جلسة.التخلي ()
Response.end
نهاية إذا
%>
<body onunload=javascript:window.open(exit.asp)>
يوجد حاليًا <%=Application(OnLine)%> عبر الإنترنت
<a href=online.asp?logout=true>خروج</a>
لاحظ أنه عند تنفيذ online.asp عملية إلغاء التحميل، سيتم فتح Exit.asp ثم قم فقط بتعيين session.Abandon() في Exit.asp وسيكون الأمر على ما يرام.
4.exit.asp
<%session.Abandon()%>
<النص البرمجي>
إغلاق ذاتي ()
</script>
وبطبيعة الحال، يتم إضافة برنامج نصي لإغلاق الجلسة مباشرة بعد تسجيل الخروج. الآن يكفي تطبيق ويب للإحصاءات عبر الإنترنت.
4. دراسة متعمقة لـ Global.asa
من تصحيح الأخطاء أعلاه، إذا استخلصت استنتاجات من مثال واحد، فسوف تطرح بالتأكيد سؤالاً: كيفية التحكم في عدد المستخدمين المسجلين عبر الإنترنت؟ ثم انظر إلى الملفات التالية واحدًا تلو الآخر:
5. Global.asa (يتم وضعه ضمن الدليل الجذر للدليل الظاهري الذي يتم تصحيح أخطائه)
<لغة البرنامج النصي=VBScript RUNAT=الخادم>
التطبيق الفرعي_OnStart
التطبيق (عبر الإنترنت) = 0
نهاية الفرعية
SubSession_OnStart
نهاية الفرعية
SubSession_OnEnd
إذا كانت session.contents(pass) ثم "حدد ما إذا كانت Session_OnEnd للمستخدم الذي قام بتسجيل الدخول
application.lock
التطبيق (عبر الإنترنت) = التطبيق (عبر الإنترنت)-1
application.unlock
نهاية إذا
نهاية الفرعية
SubApplication_OnEnd
نهاية الفرعية
</النص>
لاحظ أن كتلة Session_OnStart الموجودة في Global.asa هذه لا تقوم بأية أحداث.
لأنه بمجرد وصول المستخدم إلى الخادم، بغض النظر عما إذا كان المستخدم قد قام بتسجيل الدخول أم لا، سيتم إنشاء حدث OnStart، والمطلوب الآن هو أن يكون المستخدم الذي قام بتسجيل الدخول متصلاً بالإنترنت، لذلك لا يمكن زيادة التطبيق (متصل) بمقدار 1 بوصة حدث OnStart.
ولأن حدث OnEnd سيتم إنشاؤه بغض النظر عما إذا كانت جلسة المستخدم الذي قام بتسجيل الدخول قد انتهت (إذا قام زائر بزيارة الخادم ولكنه لم يسجل الدخول، فسيتم إنشاء حدث OnEnd أيضًا بعد انتهاء جلسته)، لذا فإن عبارة if يتم استخدامه في حدث Session_OnEnd للحكم على ما إذا كان حدث OnEnd لمستخدم قام بتسجيل الدخول، وإذا كان الأمر كذلك، فسيتم تقليل عدد الأشخاص المتصلين بمقدار 1.
ومن الجدير بالذكر: استخدام session.contents(pass)، لأن استخدام كائنات الجلسة محظور في حدث OnEnd، ولكن يمكن استدعاء متغيرات الجلسة باستخدام مجموعة من كائنات الجلسة. بمعنى آخر، لا يمكن كتابة الجلسة (pass) مباشرة، ولكن يجب كتابة session.contents(pass).
6. تسجيل الدخول.asp
<%
إذا request.querystring(logout)=صحيح إذن
جلسة.التخلي ()
نهاية إذا
اسم الإرسال=request.form(إرسال)
إذا اسم الإرسال = إرسال ثم
الاسم=request.form(الاسم)
pwd=request.form(pwd)
إذا كان الاسم = cnbruce و pwd = cnrose إذن
الجلسة (الاسم) = الاسم
جلسة (تمرير) = صحيح
آخر
خطأ في Response.write في الاسم أو الأشخاص ذوي الإعاقة.<a href='login.asp'>رجوع</a>
Response.end
نهاية إذا
application.lock
التطبيق(على الانترنت)=التطبيق(على الانترنت)+1
application.unlock
%>
يوجد حاليا <%=application(online)%> أعضاء مسجلين.
<a href=login.asp?logout=true>خروج</a>
<%آخر%>
<إجراء النموذج=طريقة تسجيل الدخول.asp=منشور>
<نوع الإدخال=اسم النص=الاسم><br>
<نوع الإدخال=اسم كلمة المرور=pwd><br>
<نوع الإدخال=اسم الإرسال=قيمة الإرسال=إرسال>
<%نهاية إذا%>
إنه يكتشف ببساطة أنه عندما يكون اسم المستخدم cnbruce وكلمة المرور cnrose، يتم إنشاء جلسة (تمرير) = true، والتي يتم الحكم عليها في Global.asa.
خمسة، استمر في استخدام خيالك
لا يكفي مجرد حساب عدد الأشخاص المتصلين بالإنترنت، ولكن أيضًا تحديد حالة المستخدم المتصل بالإنترنت.
كما يمكنك أن تتخيل، الطريقة الأساسية هي أنه عندما يقوم المستخدم بتسجيل الدخول، قم بتعيين متصل على 1 في سجل الدخول.asp (قم بالتحميل إذا كانت هناك قاعدة بيانات)، ولكن عندما يكون المستخدم غير متصل، قم بتعيين متصل على 0. لتحسين ذلك، يمكنك بحاجة إلى تعديل حدث Session_OnEnd الذي تم تعيينه عبر الإنترنت على 0 في هذا الحدث (سيتم تحميل قيمة 0 أيضًا)...