|
ASP Session Object
The Session
object is used to store information about, or change settings
for a user session. Variables stored in the Session object hold
information about one single user, and are available to all
pages in one application.
Session
object
When you are
working with an application, you open it, do some changes and
then you close it. This is much like a Session. The computer
knows who you are. It knows when you start the application and
when you end. But on the internet there is one problem: the web
server does not know who you are and what you do because the
HTTP address doesn't maintain state.
ASP solves this
problem by creating a unique cookie for each user. The cookie is
sent to the client and it contains information that identifies
the user. This interface is called the Session object.
The Session
object is used to store information about, or change settings
for a user session. Variables stored in the Session object hold
information about one single user, and are available to all
pages in one application. Common information stored in session
variables are name, id, and preferences. The server creates a
new Session object for each new user, and destroys the Session
object when the session expires.
When does a
Session Start
A session can
start when:
- A new user
requests an .asp file, and the Global.asa file includes a
Session_OnStart procedure
- A user
stores a value in a Session variable
- A user
requests an .asp file, and the Global.asa file uses the
<object> tag to instantiate an object with session scope
When does a
Session End
A session ends
if a user has not requested or refreshed a page in the ASP
application for a specified period. This value is 20 minutes by
default.
If you want to
set a timeout interval that is shorter or longer than the
default, you can set the Timeout property. The example below
sets a timeout interval of 5 minutes.
To end a
session you can also use the Abandon method.
Note:
The main problem with sessions is WHEN they should end. We do
not know if the user's last request was the final one or not. So
we do not know how long to keep the sessions alive. Waiting too
long uses up resources on the server. But if the session is
deleted too fast you risk that the user is coming back and the
server has deleted all the information, so the user has to start
all over again. Finding the right timeout interval can be
difficult.
Tip: If you are
using session variables, store SMALL amounts of data in them.
Store and
Retrieve Variable Values
The most
important thing about the Session object is that you can store
variables in it, like this:
<%
Session("username")="Hege"
Session("age")=24
%>
|
The example
above will set the Session variable username to Hege and the
Session variable age to 24.
When the value
is stored in a session variable it can be reached from any page
in the ASP application by using: Session("username"):
|
Welcome <%Response.Write(Session("username"))%> |
The line above
returns: "Welcome Hege".
You can also
store user preferences in the Session object, and then access
that preference to choose what page to return to the user.
The example
below specifies a text-only version of the page if the user has
a low screen resolution:
<%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
Variable Values
The Contents
collection contains all the variables that have been created and
stored in a session. By using the Remove method, you can remove
a variable from a session.
The example
below removes an item, in this case a session variable named
"sale":
<%
If Session.Contents("age")<=18 then
Session.Contents.Remove("sale")
End If
%> |
You can also
use the RemoveAll method to remove all variables in a session:
<%
Session.Contents.RemoveAll()
%> |
Looping Through the Contents
You can loop
through the Contents collection, to see what is stored in it:
<%
dim i
For Each i in Session.Contents
Response.Write(Session.Contents(i) & "<br>")
Next
%> |
Result:
If you do not
know the number of items in the Contents collection, you can use
the Count property:
<%
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
%> |
Result:
Session
variables: 2
Hege
24 |
Looping Through
the Objects
You can loop
through the StaticObjects collection, to see the values of all
the objects stored in the Session object:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(Session.StaticObjects(i) & "<br>")
Next
%> |
Page 1
2 3
4 5 |