[Lifetime of variables][Applications][The Global.asa file][ASP Built-in Objects][Response Object]
[Request Objects][Content Linking]

Lifetime of Variables

A variable declared outside a procedure, can be accessed and changed by any script in the ASP page where it is declared.

A variable declared inside a procedure, is created and destroyed every time the procedure is executed. No scripts outside that specific procedure can access or change that variable.

To make a variable accessible in several ASP pages, declare session variables or application variables.

Session Variables

Session variables stores information about one single user, and are available to all pages in one application. Common information stored in session variables is username and userid. To create a session variable, store it in a Session Object.

Application Variables

Application variables are also available to all pages in one application. Application variables are used to hold information about all users in a specific application. To create an application variable, store it in an Application Object.

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 holds information about one single user, and are available to all pages in one application. Common information stored in session variables is 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.

<%

Session.Timeout=5

%>

To end a session you can also use the Abandon method.

<%

Session.Abandon

%>

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:

Hege

24

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

%>