วัตถุเซสชัน ASP
วัตถุเซสชันเก็บข้อมูลเกี่ยวกับหรือเปลี่ยนการตั้งค่าสำหรับเซสชันผู้ใช้
วัตถุเซสชัน
เมื่อคุณทำงานกับแอปพลิเคชันบนคอมพิวเตอร์ของคุณ คุณเปิดมัน ทำการเปลี่ยนแปลงบางอย่างแล้วปิดมัน นี้เป็นเหมือนเซสชั่น คอมพิวเตอร์รู้ว่าคุณเป็นใคร มันรู้เมื่อคุณเปิดแอปพลิเคชั่นและเมื่อคุณปิด อย่างไรก็ตาม ปัญหาหนึ่งบนอินเทอร์เน็ตคือ เว็บเซิร์ฟเวอร์ไม่รู้ว่าคุณเป็นใครและกำลังทำอะไร เนื่องจากที่อยู่ HTTP ไม่ได้รักษาสถานะไว้
ASP แก้ปัญหานี้ด้วยการสร้างคุกกี้เฉพาะสำหรับผู้ใช้แต่ละราย คุกกี้จะถูกส่งไปยังคอมพิวเตอร์ของผู้ใช้และมีข้อมูลที่ระบุตัวผู้ใช้ อินเทอร์เฟซนี้เรียกว่าวัตถุเซสชัน
วัตถุเซสชันเก็บข้อมูลเกี่ยวกับหรือเปลี่ยนการตั้งค่าสำหรับเซสชันผู้ใช้
ตัวแปรที่จัดเก็บไว้ในออบเจ็กต์ Session จะเก็บข้อมูลเกี่ยวกับผู้ใช้รายเดียว และใช้ได้กับทุกหน้าในแอปพลิเคชันเดียว ข้อมูลทั่วไปที่จัดเก็บไว้ในตัวแปรเซสชัน ได้แก่ ชื่อ รหัส และค่ากำหนด เซิร์ฟเวอร์สร้างวัตถุเซสชันใหม่สำหรับผู้ใช้ใหม่แต่ละราย และทำลายวัตถุเซสชันเมื่อเซสชันหมดอายุ
เซสชั่นเริ่มต้นเมื่อใด
เซสชั่นเริ่มต้นเมื่อ:
- ผู้ใช้ใหม่ร้องขอไฟล์ ASP และไฟล์ Global.asa มีขั้นตอน Session_OnStart
- ค่าถูกเก็บไว้ในตัวแปรเซสชัน
- ผู้ใช้ร้องขอไฟล์ ASP และไฟล์ Global.asa ใช้แท็ก <object> เพื่อยกตัวอย่างวัตถุที่มีขอบเขตเซสชัน
เซสชั่นสิ้นสุดเมื่อใด
เซสชันจะสิ้นสุดลงหากผู้ใช้ไม่ได้ร้องขอหรือรีเฟรชหน้าในแอปพลิเคชันในช่วงเวลาที่กำหนด โดยค่าเริ่มต้น นี่คือ 20 นาที
หากคุณต้องการตั้งค่าช่วงเวลาหมดเวลาที่สั้นกว่าหรือนานกว่าค่าเริ่มต้น ให้ใช้คุณสมบัติTimeout
ตัวอย่างด้านล่างกำหนดช่วงเวลาหมดเวลา 5 นาที:
<%
Session.Timeout=5
%>
ใช้ วิธี ละทิ้งเพื่อสิ้นสุดเซสชันทันที:
<%
Session.Abandon
%>
หมายเหตุ:ปัญหาหลักของเซสชันคือเมื่อใดควรสิ้นสุด เราไม่ทราบว่าคำขอครั้งสุดท้ายของผู้ใช้เป็นคำขอสุดท้ายหรือไม่ ดังนั้นเราจึงไม่ทราบว่าเราควรให้เซสชั่น "มีชีวิตอยู่" นานแค่ไหน การรอเซสชั่นที่ไม่ได้ใช้งานนานเกินไปจะใช้ทรัพยากรบนเซิร์ฟเวอร์ แต่ถ้าเซสชั่นถูกลบเร็วเกินไป ผู้ใช้จะต้องเริ่มต้นใหม่ทั้งหมดอีกครั้งเนื่องจากเซิร์ฟเวอร์ได้ลบข้อมูลทั้งหมดแล้ว การหาช่วงเวลาที่เหมาะสมอาจเป็นเรื่องยาก!
เคล็ดลับ:จัดเก็บข้อมูลจำนวนเล็กน้อยในตัวแปรเซสชันเท่านั้น!
จัดเก็บและเรียกข้อมูลตัวแปรเซสชัน
สิ่งที่สำคัญที่สุดเกี่ยวกับวัตถุ Session คือคุณสามารถเก็บตัวแปรไว้ได้
ตัวอย่างด้านล่างจะตั้งค่า ชื่อผู้ใช้ตัวแปรเซสชัน เป็น "โดนัลด์ดั๊ก" และ อายุตัวแปรเซสชันเป็น "50":
<%
Session("username")="Donald Duck"
Session("age")=50
%>
เมื่อค่าถูกเก็บไว้ในตัวแปรเซสชัน สามารถเข้าถึงได้จากหน้าใดก็ได้ในแอปพลิเคชัน ASP:
Welcome <%Response.Write(Session("username"))%>
บรรทัดด้านบนส่งคืน: "ยินดีต้อนรับโดนัลด์ดั๊ก"
คุณยังสามารถจัดเก็บการตั้งค่าผู้ใช้ในออบเจ็กต์เซสชัน จากนั้นเข้าถึงการตั้งค่านั้นเพื่อเลือกหน้าที่จะส่งคืนผู้ใช้
ตัวอย่างด้านล่างระบุเวอร์ชันข้อความเท่านั้นของหน้าหากผู้ใช้มีความละเอียดหน้าจอต่ำ:
<%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
หากคุณไม่ทราบจำนวนรายการในคอลเล็กชันเนื้อหา คุณสามารถใช้คุณสมบัติ 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 เพื่อดูค่าของออบเจ็กต์ทั้งหมดที่จัดเก็บไว้ในออบเจ็กต์เซสชันได้:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>