Đối tượng Session ASP

Đối tượng Session được sử dụng để lưu trữ thông tin người dùng. Các biến lưu trữ trong đối tượng session chứa thông tin của một người dùng duy nhất và có thể truy cập được trên tất cả các trang của một ứng dụng.

Đối tượng Session

Khi bạn thực hiện một ứng dụng, bạn mở nó, thực hiện một số thay đổi, sau đó đóng nó. Điều này rất giống như một cuộc trò chuyện (Session). Máy tính biết bạn là ai. Nó rõ ràng bạn đã mở và đóng ứng dụng vào lúc nào. Nhưng trên Internet có một vấn đề: do địa chỉ HTTP không thể lưu trữ trạng thái, máy chủ web không biết bạn là ai và bạn đã làm gì.

ASP giải quyết vấn đề này bằng cách tạo một cookie duy nhất cho mỗi người dùng. Cookie được gửi đến máy khách, chứa thông tin có thể nhận diện người dùng. Giao diện này được gọi là đối tượng Session.

Đối tượng Session được sử dụng để lưu trữ thông tin về người dùng hoặc để thay đổi thiết lập session cho một người dùng. Các biến lưu trữ trong đối tượng session chứa thông tin của một người dùng duy nhất và có thể được sử dụng trên tất cả các trang của ứng dụng. Thông tin lưu trữ trong đối tượng session thường là name, id và các tham số. Máy chủ sẽ tạo một Session mới cho mỗi người dùng mới và hủy bỏ đối tượng Session này khi session hết hạn.

Session khi nào bắt đầu?

Session bắt đầu từ:

  • Khi một người dùng mới yêu cầu một tệp ASP và tệp Global.asa gọi hàm Subprogram Session_OnStart;
  • Khi một giá trị được lưu trong biến Session;
  • Khi một người dùng yêu cầu một tệp ASP và Global.asa sử dụng thẻ <object> để tạo đối tượng thông qua phạm vi session;

Session khi nào kết thúc?

Nếu người dùng không yêu cầu hoặc làm mới trang trong ứng dụng trong thời gian quy định, session sẽ kết thúc. Giá trị mặc định là 20 phút.

Nếu bạn muốn thiết lập thời gian chờ quá dài hoặc ngắn hơn, bạn có thể thiết lập Timeout Thuộc tính.

Ví dụ dưới đây đã thiết lập thời gian chờ 5 phút:

<%
Session.Timeout=5
%>

Để kết thúc session ngay lập tức, bạn có thể sử dụng Abandon Phương pháp:

<%
Session.Abandon
%>

Chú ý:Vấn đề chính khi sử dụng session là chúng nên kết thúc khi nào. Chúng ta không biết yêu cầu gần đây của người dùng có phải là yêu cầu cuối cùng hay không. Do đó, chúng ta không rõ nên để session "sống" trong bao lâu. Chờ quá lâu cho một session trống có thể làm hết tài nguyên của máy chủ. Tuy nhiên, nếu session bị xóa过早, người dùng sẽ phải bắt đầu lại từ đầu, vì máy chủ đã xóa tất cả thông tin. Tìm kiếm thời gian chờ hợp lý rất khó khăn.

Lưu ý:Nếu bạn đang sử dụng biến session, đừng lưu trữ nhiều dữ liệu trong đó.

Lưu và lấy lại biến session

Điểm mạnh nhất của đối tượng Session là có thể lưu trữ biến để các trang web sau này có thể đọc, phạm vi ứng dụng rất rộng.

Ví dụ dưới đây gán "Donald Duck" cho biến session có tên là username và gán "50" cho biến session có tên là age:

<%
Session("tên đăng nhập")="Donald Duck"
Session("tuổi")=50
%>

Khi giá trị được lưu vào biến session, nó có thể được bất kỳ trang nào trong ứng dụng ASP sử dụng:

Chào mừng <%Response.Write(Session("tên đăng nhập"))%>

Kết quả của dòng chương trình trên là: "Chào mừng Donald Duck".

Bạn cũng có thể lưu các thông số người dùng trong đối tượng session và sau đó truy cập vào các thông số này để quyết định trang nào sẽ được trả về cho người dùng.

Trong ví dụ dưới đây, nếu độ phân giải màn hình của người dùng thấp, hãy trả về phiên bản trang văn bản:

<%If Session("screenres")="low" Then%> 
  Đây là phiên bản văn bản của trang này
<%Else%> 
  Đây là phiên bản đa phương tiện của trang này
<%End If%>

Xóa biến session

Bộ dữ liệu contents chứa tất cả các biến session.

Bạn có thể sử dụng phương thức remove để xóa biến session.

Trong ví dụ dưới đây, nếu giá trị của biến session "tuổi" nhỏ hơn 18, hãy xóa biến session "sale":

<%
If Session.Contents("tuổi")<18 then 
  Session.Contents.Remove("sale")
End If 
%>

Nếu bạn muốn xóa tất cả các biến trong session, hãy sử dụng phương thức RemoveAll:

<%
Session.Contents.RemoveAll()
%>

Duyệt qua bộ dữ liệu contents

Bộ dữ liệu contents chứa tất cả các biến session. Bạn có thể duyệt qua bộ dữ liệu contents để xem các biến được lưu trữ trong đó:

<%
Session("tên đăng nhập")="Donald Duck"
Session("tuổi")=50
dim i
For Each i in Session.Contents
  Response.Write(i & "<br />")
Next
%>

Kết quả:

tên đăng nhập
tuổi

Nếu bạn cần biết số lượng mục trong bộ dữ liệu contents, bạn có thể sử dụng thuộc tính 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
%>

Kết quả:

Session variables: 2
Donald Duck
50

Duyệt qua bộ sưu tập StaticObjects

Có thể duyệt qua bộ sưu tập StaticObjects để xem giá trị của tất cả các đối tượng được lưu trong đối tượng session:

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br />")
Next
%>