ไฟล์ global.asa เป็นไฟล์เสริม ผู้ใช้สามารถประกาศเซสชันและวัตถุทั่วทั้งแอปพลิเคชันในสคริปต์เหตุการณ์ที่ระบุ วันนี้บรรณาธิการของช่องเทคโนโลยี Fooxin ได้รวบรวมและจัดเรียงข้อมูลที่เกี่ยวข้องเป็นพิเศษ เพื่อนที่สนใจสามารถไปที่บทความต่อไปนี้เพื่อเรียนรู้เพิ่มเติม!
เราทุกคนรู้ว่า. asa เป็นชื่อต่อท้ายไฟล์ มันเป็นตัวย่อสำหรับแอปพลิเคชันเซิร์ฟเวอร์ที่ใช้งานอยู่
จริงๆแล้วมันเป็นไฟล์เสริมที่ผู้เขียนโปรแกรมสามารถระบุสคริปต์เหตุการณ์และประกาศวัตถุที่มีเซสชันและขอบเขตแอปพลิเคชัน เนื้อหาของไฟล์นี้ไม่ได้ใช้เพื่อแสดงต่อผู้ใช้ แต่เพื่อจัดเก็บข้อมูลเหตุการณ์และวัตถุที่ใช้ทั่วโลกโดยแอปพลิเคชัน ไฟล์นี้จะต้องเก็บไว้ในไดเรกทอรีรูทของแอปพลิเคชัน แต่ละแอปพลิเคชันสามารถมีไฟล์ global.asa หนึ่งไฟล์เท่านั้น
ความเข้าใจผิดที่พบบ่อยที่สุดเกี่ยวกับไฟล์ global.asa คือสามารถใช้เป็นไลบรารีสำหรับฟังก์ชั่นการใช้งานทั่วไปและรูทีนย่อย ไฟล์ global.asa สามารถใช้เพื่อสร้างการอ้างอิงและจับภาพเริ่มต้นของวัตถุรวมถึงวัตถุแอปพลิเคชันและวัตถุเซสชัน
ไฟล์ global.asa เข้าถึงได้ตามเหตุการณ์ระดับเซสชันและเรียกในสามกรณีต่อไปนี้:
รูปแบบไฟล์มาตรฐานของ global.asa มีดังนี้:
<script language = "vbscript" runat = "เซิร์ฟเวอร์"> แอปพลิเคชันย่อย application_onstart 'application_onstart รันสิ้นสุดย่อยย่อยเซสชั่นย่อย session_onstart ครั้งแรกที่ลูกค้าเข้าถึงหน้าแรกของแอปพลิเคชัน' เซสชัน 'session_onstart run end subsement_onend' Session_onend session
1. session_onstart
ก่อนอื่นดูรหัสที่ควบคุมผู้ใช้เพื่อเข้าสู่หน้า:
1. Global.ASA (อยู่ภายใต้ไดเรกทอรีรากของไดเรกทอรีเสมือนจริงที่ดีบัก)
<script language = "vbscript" runat = "เซิร์ฟเวอร์"> subs session_onstart 'ตราบใดที่ผู้ใช้เข้าสู่เว็บไซต์นี้เป็นครั้งแรกเขาจะข้ามไปที่หน้าแรกตอบกลับ
จากนั้นดีบั๊กไฟล์ใด ๆ ในไดเรกทอรีเสมือนปัจจุบันและคุณจะพบว่าหน้าทั้งหมดข้ามไปที่ http://www.webjx.com/ <
ผ่านตัวอย่างของ "การบังคับให้เข้าสู่หน้าหนึ่ง" มันสามารถจินตนาการได้ว่าจำเป็นอย่างยิ่งเมื่อต้องปฏิบัติตามหน้าแรก
มาสังเกตเหตุการณ์ Session_onStart และ Session_Onend ต่อไปด้วยตัวอย่างของ“ จำนวนผู้ใช้ออนไลน์”
2. session_onend
2. global.asa (วางอยู่ใต้ไดเรกทอรีรากของไดเรกทอรีเสมือนจริงดีบัก)
<ภาษาสคริปต์ = vbscript runat = เซิร์ฟเวอร์> แอปพลิเคชันย่อย application_onstart 'ค่าเริ่มต้นคือ 0 แอปพลิเคชัน ("ออนไลน์") = 0 Sub Sub Semsion_onstart' การเข้าถึงผู้ใช้เพิ่ม 1 แอปพลิเคชันแอปพลิเคชันล็อค ("ออนไลน์") = แอปพลิเคชัน ("ออนไลน์") + 1 แอปพลิเคชัน แอปพลิเคชัน ("ออนไลน์") - 1 application.unlock end sub </script>3. ออนไลน์.
<%ถ้า request.QueryString ("logout") = "true" จากนั้น session.abandon () response.end สิ้นสุดถ้า%> มีอยู่ในปัจจุบัน <%= แอปพลิเคชัน ("ออนไลน์")%> ออนไลน์ <a href = "online.asp? logout = true"> ออก </a>คุณพบว่ามีแอปพลิเคชันเพียงใบเดียว ("ออนไลน์") ในหน้าและมีการอ้างอิงด้วย แล้วคุณค่าของมันมาจากไหน? นี่คือกุญแจสำคัญในไฟล์ global.asa คุณสามารถเปิด Windows ในเครื่องนี้ปิด Windows หรือออกการดีบักของทั้งสองวิธี
3. ดำเนินการต่อเพื่อปรับแต่งมัน
คุณจะพบว่าเอฟเฟกต์ของการปิดหน้าต่างหลังจากการเชื่อมต่อ "ออก" นั้นแตกต่างจากการปิดหน้าต่างโดยตรง เนื่องจากเซสชันมีอยู่ในเวลาเมื่อปิดหน้าต่างโดยตรงเหตุการณ์เซสชัน _onend จึงไม่สามารถเรียกใช้ดังนั้นความคิดที่เป็นไปไม่ได้ที่แทบจะเป็นไปไม่ได้จะเกิดขึ้นได้อย่างไร
อย่างที่เราทุกคนรู้เมื่อปิดเว็บเพจมันสามารถมาพร้อมกับเหตุการณ์ Onunload ตราบใดที่สามารถดำเนินการ onunload ได้มันไม่ใช่ทั้งหมดที่เราต้องการ? พูดไร้สาระน้อยลงแก้ไขออนไลน์
<%ถ้า request.QueryString ("logout") = "true" จากนั้น session.abandon () การตอบสนอง end end ถ้า%> <body onunload = javaScript: window.open ("exit.asp")> มีอยู่ในปัจจุบัน <%= แอปพลิเคชัน ("ออนไลน์")%> ออนไลน์ <a href = "ออนไลน์?โปรดทราบว่าเมื่อ online.asp เป็น onunload ออกไปจะเปิดออก จากนั้นเพียงแค่ตั้งค่า session.abandon () ในทางออก. asp และไม่โอเค
ออก. asp
<%session.abandon ()%> <script> self.close () </script>
แน่นอนสคริปต์สคริปต์ถูกเพิ่มเข้ามาเพื่อปิดตัวเองทันทีหลังจากเซสชันออกจากระบบ ตอนนี้เพียงเว็บแอปพลิเคชันที่มีสถิติออนไลน์ก็เพียงพอแล้ว
4. การศึกษาเชิงลึกของ Global.asa
จากการดีบักข้างต้นคุณจะได้เรียนรู้จากตัวอย่างหนึ่งและนำไปใช้กับผู้อื่นและจะถามคำถามอย่างแน่นอน: จะควบคุมจำนวนผู้ใช้ที่ลงทะเบียนออนไลน์ได้อย่างไร มาอ่านเอกสารต่อไปนี้ทีละรายการ:
4. Global.ASA (อยู่ภายใต้ไดเรกทอรีรากของไดเรกทอรีเสมือนจริงที่ดีบัก)
<script language = "vbscript" runat = "เซิร์ฟเวอร์"> แอปพลิเคชันย่อย application_onstart ("ออนไลน์") = 0 subs subs semsion_onstart ปลายย่อยย่อยเซสชั่นย่อย session_onend ถ้าเซสชัน.โปรดทราบว่าบล็อก session_onstart ใน global.asa นี้ไม่ได้ทำให้เกิดเหตุการณ์ใด ๆ
เนื่องจากเมื่อผู้ใช้เข้าถึงเซิร์ฟเวอร์ไม่ว่าผู้ใช้จะเข้าสู่ระบบหรือไม่เหตุการณ์ที่เริ่มต้นจะถูกสร้างขึ้น ตอนนี้สิ่งที่คุณต้องมีคือการเข้าสู่ระบบออนไลน์ของผู้ใช้ดังนั้นคุณจึงไม่สามารถเพิ่ม 1 ในเหตุการณ์ onstart ได้
นอกจากนี้เนื่องจากเหตุการณ์ Onend จะถูกสร้างขึ้นโดยไม่คำนึงว่าเซสชั่นของผู้ใช้ที่เข้าสู่ระบบจะสิ้นสุดลง (หากผู้เข้าชมเข้าเยี่ยมชมเซิร์ฟเวอร์ แต่ไม่ได้ลงชื่อเข้าใช้เหตุการณ์ onend จะถูกสร้างขึ้นหลังจากเซสชันสิ้นสุดลง) ดังนั้นคำสั่งหากใช้ในเหตุการณ์เซสชัน _onend หรือไม่ ถ้าเป็นเช่นนั้นจำนวนคนออนไลน์จะลดลง 1
และเป็นที่น่าสังเกตว่าการใช้เซสชันการประชุม ("ผ่าน") เป็นเพราะการใช้วัตถุเซสชันเป็นสิ่งต้องห้ามในเหตุการณ์ onend แต่ตัวแปรเซสชันสามารถเรียกได้โดยใช้คอลเลกชันของวัตถุเซสชัน กล่าวอีกนัยหนึ่งคุณไม่สามารถเขียนเซสชัน ("ผ่าน") โดยตรง แต่คุณต้องเขียนเซสชัน contents ("pass")
5. เข้าสู่ระบบ
สมาชิกที่ลงทะเบียนในปัจจุบัน <%= แอปพลิเคชัน ("ออนไลน์")%>
<a href = "login.asp? logout = true"> ออก </a> <%else%> <form action = "login.asp" method = "post"> <input type = "text" name = "name"> <br> <input type = "password" name = "pwd"> <br>
เพียงแค่ตรวจพบว่าเมื่อชื่อของ CNBRUCE และรหัสผ่านเป็น cnrose เซสชัน ("pass") = จริงถูกสร้างขึ้นซึ่งถูกตัดสินใน global.asa
5. ใช้จินตนาการของคุณต่อไป
คิดเกี่ยวกับมันลองคิดดูอีกครั้ง ไม่เพียงพอที่จะนับจำนวนคนออนไลน์และยังต้องตัดสินสถานะออนไลน์ของผู้ใช้
คุณสามารถจินตนาการถึงวิธีการพื้นฐาน เมื่อผู้ใช้เข้าสู่ระบบให้ตั้งค่าออนไลน์เป็น 1 ใน login.asp (อัปโหลดหากมีฐานข้อมูล) แต่เมื่อผู้ใช้ออฟไลน์ให้ตั้งค่าออนไลน์เป็น 0 เพื่อปรับปรุงคุณจะต้องแก้ไขเหตุการณ์ session_onend และตั้งค่าออนไลน์เป็น 0 ในเหตุการณ์ (ค่าเดียวกันจะถูกอัปโหลด) ...
แน่นอน Global.asa มีมากกว่านั้น แต่เราไม่ต้องรีบเร่งที่จะเชี่ยวชาญตอนนี้ เมื่อเราติดต่อกับฐานข้อมูลเราจะกลับไปดูและศึกษาไฟล์ต่อไป ฉันเชื่อว่าตอนนั้นเราจะตระหนักได้มากมาย ดังนั้นให้เข้าใจข้างต้นอย่างละเอียดก่อน
ฉันหวังว่าผ่านบทความนี้ฉันจะวิเคราะห์การใช้งานไฟล์ Global.asa ของ ASP สั้น ๆ ซึ่งสามารถนำความช่วยเหลือมาให้คุณได้มากขึ้น ความรู้ด้านเทคนิคเพิ่มเติมจะมีอยู่ในเครือข่าย Wuxin Technology Channel!