วัตถุเซสชันเก็บข้อมูลเกี่ยวกับหรือเปลี่ยนแปลงการตั้งค่าสำหรับเซสชันของผู้ใช้
วัตถุเซสชัน
เมื่อคุณกำลังทำงานกับโปรแกรมประยุกต์บนคอมพิวเตอร์ของคุณคุณเปิดทำการเปลี่ยนแปลงบางอย่างและจากนั้นคุณปิดมัน นี้เป็นเหมือนเซสชัน คอมพิวเตอร์รู้ว่าคุณเป็นใคร มันรู้เมื่อคุณเปิดโปรแกรมและเมื่อคุณปิดมัน อย่างไรก็ตามบนอินเทอร์เน็ตมีปัญหาหนึ่งคือ: เว็บเซิร์ฟเวอร์ไม่ทราบว่าคุณคือใครและสิ่งที่คุณทำเพราะอยู่ HTTP ไม่รักษาสถานะ
ASP แก้ปัญหานี้โดยการสร้างคุกกี้ไม่ซ้ำกันสำหรับผู้ใช้แต่ละคน คุกกี้จะถูกส่งไปยังเครื่องคอมพิวเตอร์ของผู้ใช้และมันมีข้อมูลที่ระบุผู้ใช้ อินเตอร์เฟซนี้เรียกว่าวัตถุเซสชัน
วัตถุเซสชันเก็บข้อมูลเกี่ยวกับหรือเปลี่ยนแปลงการตั้งค่าสำหรับเซสชันของผู้ใช้
ตัวแปรที่เก็บไว้ในข้อมูลเซสชันวัตถุถือเกี่ยวกับผู้ใช้หนึ่งเดียวและมีอยู่ในทุกหน้าในโปรแกรมประยุกต์หนึ่ง ข้อมูลทั่วไปที่เก็บไว้ในตัวแปรเซสชั่นที่มีชื่อรหัสและการตั้งค่า เซิร์ฟเวอร์สร้างวัตถุเซสชันใหม่สำหรับผู้ใช้ใหม่ในแต่ละครั้งและทำลายวัตถุเซสชันเมื่อเซสชันหมดอายุ
เมื่อไม่ได้เริ่มต้นเซสชัน?
เซสชั่นเริ่มต้นเมื่อ:
- ผู้ใช้ใหม่ร้องขอ 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"
นอกจากนี้คุณยังสามารถจัดเก็บค่าของผู้ใช้ในวัตถุเซสชันแล้วเข้าถึงการตั้งค่าที่จะเลือกสิ่งที่หน้าเพื่อกลับไปยังผู้ใช้
ตัวอย่างด้านล่างระบุรุ่นข้อความเท่านั้นของหน้าถ้าผู้ใช้มีความละเอียดหน้าจอต่ำ:
<%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
หากคุณไม่ทราบจำนวนของรายการในคอลเลกชันเนื้อหาที่คุณสามารถใช้ทรัพย์สินนับ:
<%
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
%>