แนะนำ: การตีความวิธีการใช้ตัวแปรวัตถุเซสชันอย่างถูกต้องใน ASP ทุกคนที่ใช้ ASP รู้ว่าวัตถุเซสชันจะเก็บข้อมูลที่จำเป็นสำหรับเซสชันผู้ใช้ที่เฉพาะเจาะจงและเมื่อผู้ใช้กระโดดระหว่างหน้าแอปพลิเคชันตัวแปรที่เก็บไว้ในวัตถุเซสชันจะไม่ถูกล้างและตัวแปรเหล่านี้จะปรากฏขึ้นเสมอเมื่อผู้ใช้เข้าถึงหน้าในแอปพลิเคชัน มันสามารถลดความซับซ้อนของโปรแกรมและปรับปรุงประสิทธิภาพการเขียนโปรแกรม แต่ก็มีข้อบกพร่องมากมาย
1. คุณลักษณะ1. SessionId
คุณสมบัติ SessionID ส่งคืนข้อมูลประจำตัวเซสชันของผู้ใช้ เมื่อสร้างเซสชันเซิร์ฟเวอร์จะสร้างตัวตนแยกต่างหากสำหรับแต่ละเซสชัน ตัวระบุเซสชันจะถูกส่งกลับเป็นชนิดข้อมูลที่ยาว ในหลายกรณี SessionID สามารถใช้สำหรับสถิติการลงทะเบียนหน้าเว็บ
2. หมดเวลา
คุณสมบัติการหมดเวลาระบุการ จำกัด เวลาการหมดเวลาสำหรับวัตถุเซสชันของแอปพลิเคชันในไม่กี่นาที หากผู้ใช้ไม่ได้รีเฟรชหรือขอหน้าเว็บภายในระยะเวลาการหมดเวลานี้เซสชันจะสิ้นสุดลง
2. วิธี
มีเพียงวิธีเดียวสำหรับวัตถุเซสชันซึ่งถูกละทิ้ง วิธีการละทิ้งลบวัตถุทั้งหมดที่เก็บไว้ในวัตถุเซสชันและปล่อยแหล่งที่มาของวัตถุเหล่านี้ หากคุณไม่เรียกวิธีการละทิ้งอย่างชัดเจนเซิร์ฟเวอร์จะลบวัตถุเหล่านี้เมื่อเซสชันหมดเวลา เมื่อเซิร์ฟเวอร์เสร็จสิ้นการประมวลผลหน้าปัจจุบันตัวอย่างต่อไปนี้จะปล่อยสถานะเซสชัน
<%session.abandon%>
iii. เหตุการณ์
วัตถุเซสชันมีสองเหตุการณ์ที่สามารถใช้งานได้เมื่อวัตถุเซสชันเริ่มต้นและปล่อยออกมา
1. เหตุการณ์ session_onstart เกิดขึ้นเมื่อเซิร์ฟเวอร์สร้างเซสชันใหม่ เซิร์ฟเวอร์ประมวลผลสคริปต์ก่อนที่จะดำเนินการหน้าที่ร้องขอ เหตุการณ์ session_onstart เป็นเวลาที่ดีที่สุดในการตั้งค่าตัวแปรเซสชันเนื่องจากมีการตั้งค่าก่อนที่จะเข้าถึงหน้าใด ๆ
แม้ว่าวัตถุเซสชันจะยังคงอยู่เมื่อเหตุการณ์ session_onstart มีการเปลี่ยนเส้นทางหรือการเรียกวิธีการสิ้นสุดเซิร์ฟเวอร์จะหยุดการประมวลผลไฟล์ global.asa และทริกเกอร์สคริปต์ในไฟล์ที่ทริกเกอร์เหตุการณ์เซสชัน _onstart
เพื่อให้แน่ใจว่าผู้ใช้จะเริ่มเซสชันเสมอเมื่อเปิดหน้าเว็บเฉพาะวิธีการเปลี่ยนเส้นทางสามารถเรียกได้ในเหตุการณ์ session_onstart เมื่อผู้ใช้ป้อนแอปพลิเคชันเซิร์ฟเวอร์จะสร้างเซสชันสำหรับผู้ใช้และประมวลผลสคริปต์เหตุการณ์ Session_onStart คุณสามารถรวมสคริปต์ในเหตุการณ์นี้เพื่อตรวจสอบว่าหน้าเปิดโดยผู้ใช้เป็นหน้าเริ่มต้นหรือไม่และถ้าไม่แนะนำให้ผู้ใช้เรียกใช้วิธีการตอบกลับวิธีการ REDIRECT เพื่อเริ่มต้นเว็บเพจ ขั้นตอนมีดังนี้:
<scriptrunat = serverlanguage = vbscript>
subsession_onstart
startPage =/myApp/starthere.asp
currentPage = request.serverVariables (script_name)
IFSTRCOMP (CurrentPage, StartPage, 1) จากนั้น
Response.redirect (startpage)
endif
enddub
</script>
โปรแกรมข้างต้นสามารถทำงานในเบราว์เซอร์ที่รองรับคุกกี้เท่านั้น เนื่องจากเบราว์เซอร์ที่ไม่รองรับคุกกี้ไม่สามารถส่งคืน SessionIdCookies เซิร์ฟเวอร์จึงสร้างเซสชันใหม่เมื่อใดก็ตามที่ผู้ใช้ร้องขอหน้าเว็บ ด้วยวิธีนี้สำหรับเซิร์ฟเวอร์ที่ร้องขอแต่ละเซิร์ฟเวอร์สคริปต์ session_onstart จะถูกประมวลผลและผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังหน้าเริ่มต้น
2. เหตุการณ์ session_onend เกิดขึ้นเมื่อเซสชันถูกยกเลิกหรือหมดเวลา
เกี่ยวกับเรื่องที่ต้องให้ความสนใจเมื่อใช้วัตถุเซสชันโปรดดูบทความก่อนหน้า
เซสชันสามารถเริ่มต้นได้ในสามวิธีต่อไปนี้:
1. ผู้ใช้ใหม่ขอให้เข้าถึง URL ที่ระบุไฟล์. asp ในแอปพลิเคชันและไฟล์ Global.asa ของแอปพลิเคชันประกอบด้วยกระบวนการ session_onstart
2. ผู้ใช้เก็บค่าในวัตถุเซสชัน
3. ผู้ใช้ขอไฟล์. asp ของแอปพลิเคชันและไฟล์ global.asa ของแอปพลิเคชันใช้แท็ก <jobch> เพื่อสร้างอินสแตนซ์ของวัตถุที่มีขอบเขตเซสชัน
หากผู้ใช้ไม่ร้องขอหรือรีเฟรชหน้าใด ๆ ในแอปพลิเคชันภายในเวลาที่กำหนดเซสชันจะสิ้นสุดโดยอัตโนมัติ ค่าเริ่มต้นสำหรับช่วงเวลานี้คือ 20 นาที การตั้งค่าขีด จำกัด การหมดเวลาเริ่มต้นสำหรับแอปพลิเคชันสามารถเปลี่ยนแปลงได้โดยการตั้งค่าคุณสมบัติเซสชันการหมดเวลาในหน้าคุณสมบัติตัวเลือกแอปพลิเคชันในตัวจัดการบริการอินเทอร์เน็ต ค่านี้ควรตั้งค่าตามข้อกำหนดของเว็บแอปพลิเคชันของคุณและพื้นที่หน่วยความจำของเซิร์ฟเวอร์ ตัวอย่างเช่นหากคุณต้องการให้ผู้ใช้ท่องเว็บแอปพลิเคชันของคุณอยู่ในแต่ละหน้าเพียงไม่กี่นาทีคุณควรลดค่าการหมดเวลาเริ่มต้นเริ่มต้นสำหรับเซสชันของคุณ ค่าการหมดเวลาเซสชันที่ยาวเกินไปจะทำให้เซสชันเปิดมากเกินไปและหมดทรัพยากรหน่วยความจำเซิร์ฟเวอร์ของคุณ สำหรับเซสชันเฉพาะหากคุณต้องการตั้งค่าการหมดเวลาที่เล็กกว่าค่าหมดเวลาเริ่มต้นคุณสามารถตั้งค่าคุณสมบัติการหมดเวลาของวัตถุเซสชัน ตัวอย่างเช่นสคริปต์ต่อไปนี้ตั้งค่าการหมดเวลาเป็น 5 นาที
<%session.timeout = 5%>
แน่นอนคุณสามารถตั้งค่าการหมดเวลามากกว่าการตั้งค่าเริ่มต้น คุณสมบัติ session.timeout กำหนดค่าหมดเวลา นอกจากนี้คุณยังสามารถจบเซสชันผ่านวิธีการละทิ้งของวัตถุเซสชันได้อย่างชัดเจน ตัวอย่างเช่นให้ปุ่มออกในตารางการตั้งค่าพารามิเตอร์การกระทำของปุ่มเป็น URL ของไฟล์. asp ที่มีคำสั่งต่อไปนี้
<%session.abandon%>
แบ่งปัน: วิธีการ ASP ป้องกันการส่งแบบฟอร์มซ้ำ ๆ ผู้ใช้มักจะพบกับสถานการณ์ที่ไม่คาดคิดเมื่อส่งแบบฟอร์มเช่นการรีเฟรชหน้าหลายครั้งกดปุ่มย้อนกลับ ฯลฯ หากไม่มีมาตรการควบคุมมันจะทำให้เกิดปัญหาการส่งแบบฟอร์มซ้ำ ๆ วิธีการป้องกันที่แนะนำในบทความนี้ส่วนใหญ่ประกอบด้วยรูทีนย่อยสี่รูต ในแอปพลิเคชันที่ค่อนข้างง่ายคุณเพียงแค่วางรหัสเหล่านี้ไว้ในไฟล์ที่รวมอยู่และอ้างอิงโดยตรง สำหรับสิ่งเหล่านั้น