Active Server Pages (Asps) Are Web Pages That Contain Server-Side Scripts in Addition To The
Active Server Pages (Asps) Are Web Pages That Contain Server-Side Scripts in Addition To The
info/
Active Server Pages (ASPs) are Web pages that contain server-side scripts in addition to the
usual mixture of text and HTML (Hypertext Markup Language) tags. Server-side scripts are
special commands you put in Web pages that are processed before the pages are sent from your
Personal Web Server to the Web browser of someone who's visiting your Web site. . When you
type a URL in the Address box or click a link on a Web page, you're asking a Web server on a
computer somewhere to send a file to the Web browser (sometimes called a "client") on your
computer. If that file is a normal HTML file, it looks exactly the same when your Web browser
receives it as it did before the Web server sent it. After receiving the file, your Web browser
displays its contents as a combination of text, images, and sounds.
In the case of an Active Server Page, the process is similar, except there's an extra processing
step that takes place just before the Web server sends the file. Before the Web server sends the
Active Server Page to the Web browser, it runs all server-side scripts contained in the page.
Some of these scripts display the current date, time, and other information. Others process
information the user has just typed into a form, such as a page in the Web site's guestbook.
To distinguish them from normal HTML pages, Active Server Pages are given the ".asp"
extension.
There are many things you can do with Active Server Pages.
• You can display date, time, and other information in different ways.
• You can make a survey form and ask people who visit your site to fill it out, send emails,
save the information to a file, etc
The appearance of an Active Server Page depends on who or what is viewing it. To the Web
browser that receives it, an Active Server Page looks just like a normal HTML page. If a visitor
to your Web site views the source code of an Active Server Page, that's what they see: a normal
HTML page. However, the file located in the server looks very different. In addition to text and
HTML tags, you also see server-side scripts. This is what the Active Server Page looks like to
the Web server before it is processed and sent in response to a request.
Server-side scripts look a lot like HTML tags. However, instead of starting and ending with
lesser-than ( < ) and greater-than ( > ) brackets, they typically start with <% and end with %>.
The <% is called an opening tag, and the %> is called a closing tag. In between these tags are the
server-side scripts. You can insert server-side scripts anywhere in your Web page--even inside
HTML tags.
There's a lot you can do with server-side scripts without learning how to program. For this
reason, much of the online Help for Active Server Pages is written for people who are familiar
with HTML but aren't computer programmers.
Displaying the Current Date and Time
The date and time described in this section are those that are on the server.
Date
Note: Even though "=date" is a short script, it's actually made up of two parts. The "date" part
tells the server, "Get me the date." The equal sign (=) tells the server to display the date in the
Web page. If you typed just:
Time
4:19:46 PM
1/23/97 4:19:46 PM
You can also use Active Server Pages (ASP) functions to customize the way the current date and
time are displayed on your Web page. To do this, use the now function together with the
following formatting functions.
Day
Year
Example
23/1/1997
Later we'll see how you can change this so only the last two digits of the year are displayed, like
this:
23/1/97
To display the day of the week as a number from 1 to 7 in a Web page, type:
<% =weekday(now) %>
where you want it to appear. When you view the page in Internet Explorer, you'll see a 1 if today
is Sunday, 2 if it's Monday, and so on.
Example
The time is 1:36:05 PM. That means it's 36 minutes past 13 o'clock.
Remember, the hour function is based on a 24-hour clock. Later we'll see how to convert from
the 24-hour clock to a 12-hour clock.
Timevalue
You probably won't ever use the timevalue function. It takes the different ways you can write
the time, such as "2:24PM" and "14:24," and returns them in this format: "2:24:00 PM." This can
be useful if you're using a function that needs to be given the time in that exact format.
Example
Earlier in this section we saw how you can use the hour, minute, and second functions to break
up the time into hours, minutes, and seconds. With the timevalue function, you can put them
back together. Type this into a Web page:
When it's 23 minutes and 5 seconds past 4 o'clock in the afternoon,
that means it's <% =timevalue("16:23:05") %>.
This is the same as <% =timevalue("4:23:05PM") %>
or <% =timevalue("16:23:05PM") %>.
Make sure you type "16:23:05PM" and not "16:23:05 PM." The "05" and the "PM." should be
run together, not separated by a space. When you view the page in Internet Explorer, you should
see:
When it's 23 minutes and 5 seconds past 4 o'clock in the afternoon, that means it's 4:23:05 PM.
This is the same as 4:23:05 PM or 4:23:05 PM.
Displaying Text
len
The len function tells you how many characters are in a word or sequence of words. (The name
"len" is an abbreviation of "length.") All characters are counted, including the space character.
For example, to find the length of the sentence "The cat is on the mat," type this into a Web
page:
There are <% =len("The cat is on the mat.") %> characters in
"The cat is on the mat."
When you view the page in Internet Explorer, you should see this:
left
You can use the left function to look at the first few characters of a word or sequence of words.
For example, to find the first character of "Frankenstein," type this into a Web page:
"Frankenstein" begins with the letter <% =left("Frankenstein", 1) %>.
When you view the page, you should see this:
right
To look at the last few characters of a word or sequence of words, use the right function. For
example, to find the last three letters of "Wednesday," type this into a Web page:
The last three letters of "Wednesday" are: <% =right("Wednesday", 3) %>.
When you view this page, you should see this:
Example
What if you wanted to take a few letters from the middle of something? How would you specify
exactly where in the middle you wanted to be? For example, how would you take out just the
"apple" part of the word "pineapples"?
You could start with the fifth character from the left and then stop at the second character from
the right. Or you could do it the following way.
When you view this page in Internet Explorer, you should see this:
apples apple
pineapple apple
Here are some examples of interesting things you can do with date, time, and text functions.
What if you wanted to have a link that pointed to a different page every day of the week? Here's
how you can do that. First, choose the pages (HTML files) on your Web site that you want your
link to point to. Name them "Sunday.htm," "Monday.htm," and so on. (If you don't have seven
different HTML files, you can copy some of the files or make aliases on your Macintosh to them.
The important thing is that there has to be one file or alias for every day of the week.)
To make the link, type
Earlier we saw how to change the date display from month/day/year to day/month/year like this:
23/1/1997
We can also change the date display so only the last two digits of the year are included. To do
this, type
23/1/97
In an earlier example, we wrote a server-side script to display the current time in words, such as:
"The time is 36 minutes and 5 seconds past 13 o'clock." This script used the ASP hour function,
which returns just the hour part of the current time, based on a 24-hour clock.
In this example, we'll see how to change 24-hour clock times such as "13 o'clock" to 12-hour
clock times ("1 o'clock PM"). To do this, we'll need to make the server-side script that uses the
hour function a little more complicated. Instead of
The script is shown below. It isn't written quite the way a programmer would write it, but it
works, and it's fairly easy to understand, since it follows the items in the bulleted list above
exactly.
The hour is
<% if hour(now) = 0 then %>
midnight.
<% end if
if hour(now) = 12 then %>
noon.
<% end if
if (hour(now) >= 1) and (hour(now) <= 11) then %>
<% =hour(now) %> o'clock AM.
<% end if
if (hour(now) >= 13) and (hour(now) <= 23) then %>
<% =hour(now) - 12 %> o'clock PM.
<% end if %>
If you type (or better yet, cut-and-paste) this script in a Web page, when you view the page, you
should see something like this:
Forms are a convenient way to communicate with visitors to your Web site. Using forms, you
can create a survey form and ask visitors to fill it out. When they fill out the form, you can
process the results automatically.
With forms, there are two steps: first you create the form, and then you process it. To create a
form for an Active Server Page, just create a standard HTML form.
To try out this example, create an HTML file ("form_response.html") and cut-and-paste the
following text into it.
form_response.html
<html>
<head><title>Asking for information</title></head>
<body>
<form method="post" action="form_response.asp">
Your name: <input type="text" name="name" size="20"><BR>
Your email: <input type="password" name="email" size="15"><BR>
<input type="Submit" value="Submit">
</form>
</body>
</html>
Active Server Pages provide a mechanism for processing forms that, unlike CGI scripting,
doesn't involve serious programming: the Request.Form.
Considering the form above, we may create the file bellow and get a response.
form_response.asp
<html>
<head><title>Responding to a form</title></head>
<body>
Your name is <% =Request.Form("name") %> <BR>
Your email is <% =Request.Form("email") %>
</body>
</html>
Creating a Variable
You'll probably want to do more with your forms than display their contents in a Web page. For
example, based on the contents of the form, you may want to create a variable and insert that
variable in different places of your response page. You may need to create a variable. To do that,
just make up a name and set it equal to the contents of the field.
For example, if you have a field called "CatName" in your form, you can save it into a variable
called "TheName" by typing:
My cat´s name is <% =TheName %>. Do you want to see <% =TheName %>?.
Example
The form in this example asks users to introduce their names and their favorite color: red, blue,
or green. When the form is received, the server responds displaying these data.
nameandcolor.html
<html>
<head><title>Name and Color</title></head>
<body>
<FORM ACTION="nameandcolor.asp" METHOD=POST>
Let me know your Name and Favorite Color:
<P>YOUR NAME:
<INPUT TYPE="TEXT" NAME="YOURNAME" SIZE=20>
<P>COLOR:
<INPUT TYPE="RADIO" NAME="COLOR" VALUE="1" CHECKED>Red
<INPUT TYPE="RADIO" NAME="COLOR" VALUE="2">Green
<INPUT TYPE="RADIO" NAME="COLOR" VALUE="3">Blue
<P>
<INPUT TYPE="SUBMIT" VALUE="OK">
</FORM>
</body>
</html>
Now, create an ASP file ("nameandcolor.asp") and cut-and-paste the following text into it.
nameandcolor.asp
<html>
<head><title>Name and Color</title></head>
<body>
<% TheName = Request.Form("YOURNAME") %>
<% colornumber = Request.Form("COLOR") %>
Hi, <% =Thename %>.<BR>
I know your favorite color is
<% if colornumber = "1" then %>
red
<% end if %>
<% if colornumber = "2" then %>
green
<% end if %>
<% if colornumber = "3" then %>
blue
<% end if %>.
</body>
</html>
If....Then...Else
The If....Then...Else instructions sequence is very similar to the one we may find in different kind
of scripting languages. Let's check an example.
<%
AA="water"
If AA="water" Then
response.write ("I want to drink water")
Else
response.write ("I want to drink milk")
End If
%>
<% AA="water"
If AA="water" Then %>
In both cases we have checked a condition (AA="water"), and we have get a positive instruction
(to write the sentence "I want to drink water"). We are allowed to execute any kind of
instructions (including If....then....Else) and as many instructions as we want .
For....Next
This instructions is also similar in different programming languages. Let's see a typical example.
In this case we have defined a variable ("mynumber") and using the For...Next instruction we
have repeated 10 times line 4. Similarly to If....Then....Else instruction, we are allowed to
execute any kind of instructions and as many of them as we want .
The For...Next instruction allows to define the value of the increment.
In both cases we will get the same response ("Hello" 10 times). The increment may be positive
or negative as shown in the example
Do While...Loop
<%
mynumber=0
Do While mynumber<10
response.write("Hello<HR>")
mynumber=mynumber+1
Loop
%>
In this example the condition is "mynumber<10" and the instructions defines a response text and
an increment of the variable "mynumber". In the example, mynumber will be increased until it
gets a value of 10. Then the loop will be abandon. Several instruction may be used within the
loop.
Do Until....Loop
Quite similar to the previous one, it also includes a condition and one or more instructions:
<%
mynumber=0
Do Until mynumber=10
response.write("Hello<HR>")
mynumber=mynumber+1
Loop
%>
In this example the condition is "mynumber=10", so mynumber will increased until it is equal to
10, and then the loop will be abandon.
Let's see an example using this Do Until...Loop:
<%
myfirstnumber=0
mysecondnumber=0
Do Until myfirstnumber=15
Do Until mysecondnumber=15
response.write("X")
mysecondnumber=mysecondnumber+1
Loop
Response.write ("<BR>")
myfirstnumber=myfirstnumber+1
mysecondnumber=myfirstnumber
Loop
Response.write ("END")
%>
This is a very useful instruction in case we want to check different values for variable. Lets
check an example:
<%
mynumber=3
Select Case mynumber
Case 1
Response.write ("Number 1")
Case 2
Response.write ("Number 2")
Case 3
Response.write ("Number 3")
Case 4
Response.write ("Number 4")
Case 5
Response.write ("Number 5")
Case Else
Response write ("Mynumber is higher than 5")
End Select
%>
In this example above, we have defined mynumber as 3, so they are executed the instructions
following line 8 (in this case only one instruction is executed, but they may be several
instructions). Case Else is not necessary.
<html>
<head><title>Chose background color</title></head>
<form action="backgroundresponse.asp" method="post">
Which color do you prefer to use as your background?
<BR>
<input type="radio" name="kindofcolor" value="defined" checked>
Defined color
<select name="definedcolor">
<option value="#FFFFFF">White</option>
<option value="#FF0000">Red</option>
<option value="#00FF00">Green</option>
<option value="#0000FF">Blue</option>
</select>
<BR>
<input type="radio" name="kindofcolor" value="custom">
Custom color
<input type="text" size="8" name="mycolor"></input>
<BR><input type="Submit" value="Submit"></input>
</form>
</body>
</html>
backgroundresponse.asp
<%
kindofcolor=Request.form("kindofcolor")
<html>
<head><title>Chose background color</title></head>
<body bgcolor="<% =colorofbackground %>">
<center>
<H1><% =texttoshow %></H1>
</center>
</form>
</body>
</html>
Subroutines
In the next two examples, we have asked our visitors his name, and depending on that answer a
different response is sent to the client. The response will be the same in both cases, but in the
second one subroutines are used. The use of subroutines may be very useful when there are a lot
of instructions to be perform within a subroutine. This way it will allow us to simplify the
structure of our script.
Example 1
<%
TheName=request.form("name)
if TheName="John" then
response.write ("Hi, John. How are you?")
response.write ("<br>Did you know I got married last month?")
else
response.write ("Hi. How are you?")
end if
%>
Example 2
<%
TheName=request.form("name)
if TheName="John" then
ResponseToJohn()
else
ResponseToUnknown()
end if
Sub ResponseToJohn()
response.write ("Hi, John. How are you?")
response.write ("<br>Did you know I got married last month?")
End Sub
Sub ResponseToUnknown()
response.write ("Hi. How are you?")
End Sub
%>
Whatever()
Where Whatever is the name of the subroutine (it is recommended to use a very descriptive name
of the task we want to perform within the subroutine to make it easier to understand the script).
We may also provide information to the subroutine in order to perform the specified task. The
data will be provided this way:
In the following example we will provide different data to a unique subroutine depending on the
Name of the person provided throw a form:
Example 3
<%
TheName=request.form("name)
if TheName="John" then
ResponseToVisitor(35,Sue,New York)
else
if TheName="Peter" then
ResponseToVisitor(33,Sally,Los Angeles)
else
response.write("Who are you?")
end if
end if
Sub ResponseToVisitor(AA,BB,CC)
response.write ("I know your are" & AA & "years old, ")
response.write ("you are married to" & BB & ", and")
response.write ("you are living in " & CC)
End Sub
%>
In line 14 it is specified AA is the first variable to be get, BB the second one, and CC the third
one. The values for the three variables are provided in the same order in line 5 or line 8.
The example above also shows subroutines are very useful to avoid repeating a specific number
of tasks several times within the script, so that the script looks more organized and it is smaller.
Include/virtual
Server Site includes or SSI is a very simple programing language (see a small tutorial) but it also
has a very limited number of instructions. We will consider only one option SSI allows us to use
within our asp scripts: include/virtual.
In the next example we will use the include option of SSI in a our asp script (response.asp). This
command allows as to add a set of instructions from different files (file1.txt and file2.txt bellow)
and execute them.
Example 4
response.asp
<%
TheName=request.form("name)
if TheName="John" then
%>
<!--#include virtual="/file1.html" -->
<% else %>
<!--#include virtual="/file2.asp" -->
<%
end if %>
File1.html
Hi, John.<br>
I know your are 31 years old, you are married to Sue, and you are living in New York.
File2.asp
<%
for i=1 to 3
response.write(Thename & "...<BR>")
next
response.write("Who are you?")
%>
In this case, if the name of the person who is visiting our page is John, then we will respond with
file1.html. If not, then we will execute some asp instructions from file2.asp.
The include file must be a text file (.txt, .html, .htm, .shtml, .asp...). Although we have used
file1.html and file2.asp, the script will work exactly in the same way with file1.txt and file2.txt
(changing the name of the files would have no effect).
<%
UserName=request.form ("username")
Password=request.form("password")
if UserName="myusername" and Password="mypassword" then
%>
<!--#include virtual="/cgi-bin/secret_info.txt" -->
<% else %>
<Form Action=secretpage.asp method=post>
Username: <input type=text name=username size=15><BR>
Password: <input type=text name=password size=15><BR>
<input type=Submit Value=Send>
</form>
<% end if %>
secret_info.txt
In this case it is convenient to save secret_info.txt file in the cgi-bin directory (the .txt file is not
accessible by visitors from this directory, but it will be accessible from our top directory).
In this page we will learn how to keep information from the user in our server (Session method)
and how to share information between users (Application method). This is only a basic tutorial
for beginners, so only basic features will be described.
The first time a user accesses to a our pages some connections and disconnections took place.
During this process the server and the client will interchange information to identify each other.
Due to this exchange of information our server will be able to identify a specific user and this
information may be use to assign specific information to each specific client. This relationship
between computers is call a session. During the time a session is active, it is possible to assign
information to a specific client by using Session method. We will use an example to explain this
method:
Let's suppose we want to allow specific user to access the information on our site or directory
and we want to show a username in all pages visited by the user. In this case we may use the
Session method.
In this example, we will ask the username of the person in our index.asp page
respondtoforms.asp
<% IF Request.form="" THEN %>
1
2
<html>
3
<title>Our private pages</title>
4
<body>
5
In order to access this pages fill the form below:<BR>
6
<form method="post" action="index.asp">
7
Username: <input type="text" name="username" size="20"><BR>
8
Password: <input type="password" name="password" size="15"><BR>
9
<input type="Submit" value="Submit">
10
</form>
11
</body>
12
</html>
13
14
<% ELSE %>
15
16
<%
17
IF Request.form("username")="Joe" AND Request.form("password")="please"
18
THEN
19
%>
20
<%
21
Session("permission")="YES"
22
Session("username")="Joe"
23
%>
24
25
<html>
26
<title>Our private pages</title>
27
<body>
28
29
Hi <% =Session("username") %>, you are allow to see these pages: <BR>
30
<A HREF="page1.asp">Page 1</A><BR>
31
<A HREF="page2.asp">Page 2</A>
32
33
</body>
34
</html>
35
36
<% ELSE %>
37
38
Error in username or password
39
40
<% END IF %>
41
42
<% END IF %>
After filling the form and submitting it, as Request.form is not "" and the script will jump to line
15. In line 17 they are checked the username and password. If user name is "Joe" and Password
is "please", then two variables are set for the client (lines 21-22):
Session("permission")="YES"
Session("username")="Joe"
These variables will be kept in the server during the time the session is active (normally it will
expire after 20 minutes without contact).
Finally, if username and password are correct, a response page with links is send to the client
with the name of the user in the top. In this example, if the username or password are incorrect
the response page will include the text in line 38.
Now, let's suppose the user clicks in the link "Page 1" (page1.asp). The code of page1.asp will be
the following one:
page1.asp
<% IF Session("permission")="YES" THEN %> 1
2
<html> 3
<title>Page 1</title> 4
<body> 5
6
Hi <% =Session("username") %>, welcome to Page 1 <BR> 7
This page is empty at the moment, but it will be very interesting in the next future 8
9
</body> 10
</html> 11
12
<% ELSE %> 13
14
You are not allowed to access this page 15
16
<% end IF %> 17
In line 1 it is check whether the value for Session("permission") is "YES". If the answer is
positive a page with information is send to the client. If the answer is negative, the text in line 15
is send.
NOTES:
• Session method is suitable for sites with a limited number of visitors. For sites with a
bigger number of visitors it is preferable to keep the information in the clients computer
(by using cookies).
• To create more variables associated to a specific client we must substitute the text
between brackets in Session("text").
• The corresponding security features in the client's browser must be enable.
The Application method
With Session method we have defined a value for Session("whatever")="Joe", but this
information can not be share between visitors (Session("whatever") has a unique value for each
visitor). To allow sharing information Application method is used.
For a better understanding of this method we will create a counter which will be shown in the
same page. In order to make it work, copy the code below to your server:
counter.asp
<% 1
Aplication.Lock 2
Application("pagevisits")=Application("pagevisits")+1 3
Application.Unlock 4
%> 5
6
<html> 7
<title>Page under construction</title> 8
<body> 9
10
Under construction<BR><BR> 11
Page views: <% =Application("pagevisits") %> 12
13
</body> 14
</html> 15
In the first part of this code, as Application method is shared between different clients, it is
necessary to prevent other clients from modifying the information in Application("pagevisits").
Application.Lock will avoid that by stopping the information to be shared, and
Application.Unlock will allow the information to be shared again. Line 3 increases the value for
the counter.
Finally a html code is send to the client, including the value of the counter.
NOTES:
Session and Application method has been used to create a simple chat script (copy and paste the
code to your site and it will work immediately.
In order to learn how Dictionary object works we will create a small script which will translate
number 1 to 10 from English to Spanish.
translate.asp
1
<% 2
SET MyDictionary=CreateObject("Scripting.Dictionary") 3
MyDictionary.Add "one","uno" 4
MyDictionary.Add "two","dos" 5
MyDictionary.Add "three","tres" 6
MyDictionary.Add "four","cuatro" 7
MyDictionary.Add "five","cinco" 8
MyDictionary.Add "six","seis" 9
MyDictionary.Add "seven","siete" 10
MyDictionary.Add "eight","ocho" 11
MyDictionary.Add "nine","nueve" 12
MyDictionary.Add "ten","diez" 13
EnglishNumber="four" 14
SpanishNumber=MyDictionary.Item (EnglishNumber) 15
Response.Write(SpanishNumber) 16
%> 17
18
We may change the values in our dictionary by using this kind of code:
We may display the number of element pairs in the dictyonary by using this code:
• MyDictionary.Count example
If we want to check whether a key exists in our dictionary before responding to our visitor we
will use this kind of comparisoncode
• If there is no information posted to the script (line 6), the script will send to the visitor the
form in the Sendform() subrouting (lines 34-40).
• When a request to translate a number is get the script will check whether the number
corresponds to a key in the dictionary (line 25). If the response is afirmative the
corresponding item is send to the visitor. In case the key does not exists, a "No translation
available" response is send to the visitor (line 29).
translation.asp
<html> 1
<title>Page under construction</title> 2
<body> 3
4
<% 5
if request.form="" then 6
Sendform() 7
else 8
SET MyDictionary=CreateObject("Scripting.Dictionary") 9
10
MyDictionary.Add "one","uno" 11
MyDictionary.Add "two","dos" 12
MyDictionary.Add "three","tres" 13
MyDictionary.Add "four","cuatro" 14
MyDictionary.Add "five","cinco" 15
MyDictionary.Add "six","seis" 16
MyDictionary.Add "seven","siete" 17
MyDictionary.Add "eight","ocho" 18
MyDictionary.Add "nine","nueve" 19
MyDictionary.Add "ten","diez" 20
EnglishNumber=request.form("EnglishNumber") 21
Response.Write("English number: " & EnglishNumber) 22
23
if MyDictionary.Exists (EnglishNumber)=True then 24
SpanishNumber=MyDictionary.Item (EnglishNumber) 25
Response.Write("<BR>Spanish number: " & SpanishNumber) 26
else 27
Response.Write("<BR>Spanish number: " & "No translation available") 28
end if 29
end if 30
%> 31
32
<% Sub Sendform() %> 33
<form action=translation.asp method=post> 34
Write a number in English<BR> 35
<input type=text size=30 name=EnglishNumber><BR> 36
<input type=submit Value="Enter to my Secret Page"> 37
</form> 38
39
<% End Sub %> 40
41
</body> 42
</html> 43
In this example keys and items are used as usernames and passwords. It is very similar to the one
above.
secretpage.asp
<% 1
if request.form="" then 2
Sendform() 3
else 4
SET MyDictionary=CreateObject("Scripting.Dictionary") 5
MyDictionary.Add "John","123" 6
MyDictionary.Add "Peter","456" 7
MyDictionary.Add "Anna","789" 8
Username=request.form("Username") 9
Password=request.form("password") 10
11
if MyDictionary.Exists (Username)=True AND 12
Password=MyDictionary.Item (Username) then 13
SecretInfo() 14
else 15
Response.Write("Error: incorrect userame or password") 16
end if 17
end if 18
%> 19
20
<% Sub Sendform() %> 21
<form action=secretpage.asp method=post> 22
Username: <input type=text size=30 name=Username><BR> 23
Password: <input type=password size=30 name=Password><BR> 24
<input type=submit Value="Submit"> 25
</form> 26
<% End Sub %> 27
28
29
<% Sub SecretInfo() %> 30
<html> 31
<head> 32
<title>My Secret Page</title> 33
</head> 34
<body bgcolor=FFFFFF> 35
<center> 36
<h1>This is my secret info</h1> 37
Hello !<BR> 38
Do you want to be my friend? 39
</center> 40
</body> 41
</html> 42
<% End Sub %>
Cookies method is very similar to Session method: the basic difference is that with Cookies
method the information is save in the clients computer and not in the server, so it is more suitable
for sites with a lot of visitors. This method implies sending information to the client and
requesting it whenever the information is needed. Additionally, we will learn how to delete the
information save in the clients computer when it is not necessary anymore.
When the visitor gets to our asp file we may save information related with him in his computer.
The order will be like this one:
When this line is executed, the visitor will have the information in his computer, and whenever
we need that information, we may request it using this code:
Let's try an example using Cookies method: let's consider we have visitors checking our site
several times and we want to let them know how many times they have accessed to our
computer.
cookiesexample.asp
<% If Request.Cookies ("NumberVisits")="" Then %>
<% Response.Cookies ("NumberVisits")=1 %>
This is your first visit to this page. Welcome.
<% Else %>
<% VarNumberVisits=Request.Cookies ("NumberVisits")
VarNumberVisits=VarNumberVisits+1
Response.Cookies("NumberVisits")=VarNumberVisits %>
Welcome back to this page. You have visited this page <% =VarNumberVisits
%> times.
<BR>Check my great links
<BR>.....
<BR>.....
Cookies method may be used to show visitors specific information we have requested throw a
form, as for example a list of links related to a specific theme, information to allow access to the
content of a page or to personalize the page (background color, frames or not frames...),
information to fill a form automatically, etc.
Example 1: This one will be the basic code we need to open a text file:
1 <%
2 Set fs = CreateObject("Scripting.FileSystemObject")
3
4 Set wfile = fs.OpenTextFile("c:\Mydir\myfile.txt")
5 filecontent = wfile.ReadAll
6
7 wfile.close
8 Set wfile=nothing
9 Set fs=nothing
10
11 response.write(filecontent)
12 %>
Line 2 will create the appropriate environment which allows to perform the operations involving
files in the server. We have defined a variable named "fs" to do it (we may change the name of
this variable).
In line 4 we have create a new variable named "wfile" and we have apply the method
OpenTextFile to variable "fs". We have also define which is the exact location of the file we
want to open in this line (the complete path is necessary).
In line 5 we have read all the content of the file to a variable named "filecontent" using the
instruction "ReadAll".
Lines 7 to 9 are use to let the server know we have finished all operations involving files.
In line 11 we have response to the client with the content in the variable "filecontent".
Example 2: Let's suppose we have a file with different kind of information in each line (a name
in the first line, the last name in the second one, and the age in the third one), and we want to use
them separately. This one will be the script we may use:
1 <%
2 Set fs = CreateObject("Scripting.FileSystemObject")
3
4 Set wfile = fs.OpenTextFile("c:\Mydir\myfile.txt")
5 firstname = wfile.ReadLine
6 lastname = wfile.ReadLine
7 theage = wfile.ReadLine
8
9 wfile.close
10 Set wfile=nothing
11
12 Set fs=nothing
13
14 %>
15
16 Your first name is <% =firstname %><BR>
17 Your last name is <% =firstname %><BR>
Your are <% =firstname %> years old<BR>
This example is very similar to the previous one, but in this case each line we have read from
"myfile.txt" has been saved to a different variable (lines 5 to 7), and they have been used in lines
15 to 17 to respond to the client.
Example 3: This example will read all lines in the file, and the response page will include the
content of each line with its line number.
1 <%
2 Set fs = CreateObject("Scripting.FileSystemObject")
3
4 Set wfile = fs.OpenTextFile("c:\Mydir\myfile.txt")
5
6 counter=0
7 do while not wfile.AtEndOfStream
8 counter=counter+1
9 singleline=wfile.readline
10 response.write (counter & singleline & "<br>")
11 loop
12
13 wfile.close
14 Set wfile=nothing
15 Set fs=nothing
16
17 %>
In line 6 we will define the variable "counter", and in line 7 to 11 we will repeated instructions
within the Do_While _Loop until the file does not reach the end of the file (the condition is "not
wfile.AtEndOfStream").
Example 4: Let's suppose we have a file with a number in line 1 and a second number in line 2.
1 <%
2 Set fs = CreateObject("Scripting.FileSystemObject")
3
4 Set wfile = fs.OpenTextFile("c:\Mydir\myfile.txt")
5
6 number1 = Clng(wfile.ReadLine)
7 number2= Clng(wfile.ReadLine)
8
9 number1and2 = number1 + number2
10
11 response.write (number1and2)
12
13 wfile.close
14 Set wfile=nothing
15 Set fs=nothing
16
%>
In the previous examples we were able to save the value in a line to a variable, but that variable
was a string class variable. In this example we have saved the content of line 1 and line 2 to
variables "number1" and number2" by using the function "Clng". This function has allow us to
add both numbers in line 9 and send the result to the client (line 10).
Example 1: The basic code we need to create a file is very similar to that one we have used to
open a file:
1 <%
2 thetext="Write this text in the file"
3
4 Set fs = CreateObject("Scripting.FileSystemObject")
5
6 Set wfile = fs.CreateTextFile("c:\Mydir\myfile.txt", True)
7 wfile.Write (thetext)
8
9 wfile.close
10 Set wfile=nothing
11 Set fs=nothing
12
13 response.write("Text created")
14 %>
The differences to instructions when opening a file are line 6 and line 7:
The method used in line 6 is "CreateTextFile"; it is necessary to indicate the complete path to the
file we want to create; in line 6 we may use the instruction True (to allow over-writing an
existing file) or False (if the file exits, it is not over-written).
wfile.WriteLine (thetext1)
wfile.WriteLine (thetext2)
...
In this case we will write the content in variable "thetext1" in line 1, content in "thetext2" in line
2 etc.
Example 2: Let suppose we want to record the IP address of all visitor to our page to a file
named "mylog.txt".
1 <%
2 VisitorsIP=Request.ServerVariables ("REMOTE_ADDR")
3
4 Set fs = CreateObject("Scripting.FileSystemObject")
5
6 Set wfile = fs.OpenTextFile("c:\Mydir\mylog.txt", 8,false,0)
7 wfile.WriteLine (VisitorsIP)
8
9 wfile.close
10 Set wfile=nothing
11 Set fs=nothing
12
13 response.write("IP registered")
14 %>
The IP address is requested in line 2 (check Functions and Procedures). In this case we have
open the file "mylog.txt" in line 6 with the instruction "forappending". this instruction will allow
us to open the file and add at the end of it the IP address of our last visitor.
In this tutorial we will create a regular HTML page with a small javascript code, and we will use
this javascript code to include in the page new information from a ".asp" file.
javascript.html
<html> 1
<title>My page</title> 2
<body> 3
4
<script language="javascript" src="javascript.asp"></script> 5
6
</body> 7
</html> 8
javascript.asp
document.write ("hello") 1
In the first file (javascript.html) we have include a javascript code in red, and within the code the
file name from which we will get information to complete our page (src: source). So that we are
asking for information to complete our page (javascript.html) to a different page (javascript.asp).
This time we have only include the file name, but we may use the complete url even from a
different site (for example: http://www.adifferentsite.com/javascript.asp).
In the second file (javascript.asp) we have include the information necessary to write in the
document the word "hello". This time we have use ".asp" extensión for the second page even
though other extensions are possible.
So we already know we are able to include a text generated in one page within a different one.
As the information we are including can be generate within a ".asp" file, we can add information
dinamically by using Active Server Pages.
In case you are using ".asp" files whithin a site and the origen of the information we want to
include in the page is originated in the same site, using any of those system is not very
convenient: the number of conections to the server will increase, and there may be an important
delay. In case you want to include information obtained from an asp script in several pages but
you do not want to copy the asp script in all of them, you may use the Include instruction, so
that the script is only in one page, and by changing it you will change the results in several
pages.
mypage.html
<html>
1
<title>My page</title>
2
<body>
3
4
<script language="javascript"
5
src="http://www.myadrotator.com/adrotator.asp"></script>
6
7
</body>
8
</html>
adrotator.asp
<% 1
if session("ad")="" then 2
session("ad")=0 3
end if 4
5
if session("ad")=5 then 6
session("ad")=1 7
else 8
session("ad")=session("ad")+1 9
end if 10
%> 11
12
<% Select Case session("ad") %> 13
<% case 1 %> 14
document.write ("<A HREF=http://www.1site.com">) 15
document.write ("<IMG SCR=1.gif>") 16
document.write ("</A>") 17
<% case 2 %> 18
document.write ("<A HREF=http://www.2site.com">) 19
document.write ("<IMG SCR=2.gif>") 20
document.write ("</A>") 21
<% case 3 %> 22
document.write ("<A HREF=http://www.3site.com">) 23
document.write ("<IMG SCR=3.gif>") 24
document.write ("</A>") 25
<% case 4 %> 26
document.write ("<A HREF=http://www.4site.com">) 27
document.write ("<IMG SCR=4.gif>") 28
document.write ("</A>") 29
<% case 5 %> 30
document.write ("<A HREF=http://www.4site.com">) 31
document.write ("<IMG SCR=4.gif>") 32
document.write ("</A>") 33
<% End select %> 34
NOTE: when writing the javascript code you must be very carefull: do not include brakets
within the brakets in the javascript code
p.e.: Correct: document.write ("<A HREF=http://www.4site.com">)
Incorrect: document.write ("<A HREF="http://www.4site.com"">)
Correct: document.write ("<A HREF='http://www.4site.com'">)
You may include in the response as many lines like the ones above or any other javascript
code.
A simple text hit counter
Our page is "mypage.html" and we are requesting information to complete it from
"http://www.mycounter.com/hitcounter.asp" which may be located in the same or in a different
site. The information provided by the second file will allow to get a text with the number of hits
in our page.
mypage.html
<html>
1
<title>My page</title>
2
<body>
3
4
<script language="javascript"
5
src="http://www.mycounter.com/hitcounter.asp"></script>
6
7
</body>
8
</html>
hitcounter.asp
<% 1
Wfile="c:\mydir\cgi-bin\hitcounter.txt" 2
3
Set fs = CreateObject("Scripting.FileSystemObject") 4
Set a = fs.OpenTextFile(Wfile) 5
hits = Clng(a.ReadLine) 6
hits = hits + 1 7
a.close 8
9
Set a = fs.CreateTextFile(Wfile,True) 10
a.WriteLine(hits) 11
a.Close 12
%> 13
document. write ("Number of hits since 2002/01/01: <% =hits %>") 14
• Lines 2. We will need a text file with a number as its unique content. The path to that file
will be openned in variable "Wfile". Creating this page within cgi-bin directory is a good
way to prevent visitor from accesing our counter (they will get an error when trying to
access a ".txt
file within cgi-bin directory).
• Lines 4-8. We will open our file, read the content to a variable ("hits"), and in line 7 the
variable will be increased by one.
• Lines 10-12 . We will create a new file with the same name (overwriting the previous
file) with the content in "hits".
• Line 14. The response page will be a javascript code containing the number of hits.
• Introduction
• Instead of having our information (variables or numbers) in variables like Mydata1,
Mydata2, Mydata3 etc, by using arrays our information will be in an unique variable. Let
´s check an example:
array.asp
<html> 1 Line 6: In this example we have defined by using
<title>My Array</title> 2 "DIM" an array named Mydata and we have
<body> 3 defined the size of the array. We may consider
4 the table bellow as the source of information for
<% 5 our array.
DIM MyData(2,2) 6
MyData 0 1 2
MyData (0,0) = "1" 7
MyData (0,1) = "2" 8 0 1 2 3
MyData (0,2) = "3" 9
MyData (1,0) = "4" 10 1 4 5 6
MyData (1,1) = "5"
MyData (1,2) = "6" 11 2 7 8 9
MyData (2,0) = "7"
MyData (2,1) = "8" 12 Lines 7-15. After defining the array we have
MyData (2,2) = "9" assigned values to the array.
13
Response.write (MyData (1,2)) Line 17. In the response page we will send the
%> 14 value assigned to MyData(1,2) in the array. The
first number will be the row and the second the
</body> 15 column, so that in our case the response page will
</html> show the value "6"
16
17
18
19
20
21
• Very often, we will defined an array from data obtained from a table with only one
column. Let´s check an example:
array2.asp
<html> 1 Original table for the array in the script
<title>My Array</title> 2 MyData
<body> 3
4 0 1
<% 5
DIM MyData(9) 6 1 4
MyData (0) = "0" 7
MyData (1) = "1" 2 7
8
MyData (2) = "2" 9 3 3
MyData (3) = "3" 10
MyData (4) = "4" 4 4
MyData (5) = "5" 11
MyData (6) = "6" 5 5
12
6 6
MyData (7) = "7"
MyData (8) = "8" 13 7 7
MyData (9) = "9"
14 8 8
Response.write (MyData (5))
%> 15 9 9
18
19
20
21
</pre>
• In this example the array has been create from a string, and each component of the array
has been separated by a comma. The Array method will do it for us easily.
We may also want to use a different string with a different delimiter to define the
components in our array:
</pre>
• In this example we have defined the variable TheText, and whithin this variable we have
include strings separated by "=".
• In the next line, we have split the variable TheText into an array of strings (Thearray).
Split command have been used to brake TheText and "=" has been used as a delimiter to
separate the substrings.
• In the response page we have indicated the individual values of Thearray one by one.
• It may happend to have a variable we want to split, but we do not know how many
substrings we may get. In that case we may use ubound command to discover how
many elements are in our array, and them we may use that value to write them by using a
For-next loop (see example below).
</pre>
•
</pre>
• The array and the assignation of values has been done as usually, and in the second part
of the script we have used some lines similar to this one:
<% =join(filter(MyArray,"t",True,0),",") %>
• In this lines we have filter the values at MyArray and we have join them.
• filter(MyArray,"t",True,0)
This part of the line have search for "t" in MyArray.
True means we have selected the strings containing the search string (in this
case "t").
False will indicate we are selecting the strings which do not content the search
string.
0 means our search is case sensitive (a binary comparation)
1 will mean it is not a case sensitive search (a textual comparation)
join(filter(MyArray,"t",True,0),",")
The complete line will join the filtered strings with the delimiter indicated (in this
case ",")
Chicag From the table we got this three lines by separeting the values by
Peter student 123 commas:
o
John teacher London 234
Peter,student,Chicago,123
Sue Manage Sidney 789 John,teacher,London,234
r
Sue,Manager,Sidney,789
Peter,student,Chicago,123/John,teacher,London,234/Sue,Manager,
Sidney,789
• The string obtained was saved to a variable named Mydata in the script bellow. The
resulting page will show a table like the original. This script is not limited by number of
rows or columns (the maximun amount of then is calculate each time we run the script).
Createatable.asp
<%
Mydata="Peter,student,Chicago,123/John,teacher,London,234/Sue,Manager,Sidney,789"
Createtable()
%>
<%
Sub CreateTable()
MyRows=split (Mydata,"/")
RowsNumber=ubound(MyRows)
End Sub
%>
• This script may be used for several porpouses: we may generate Mydata by filtering
values from an array as shown bellow:
• <%
Dim Myclients(3)
Myclients(0)="Peter Smith,Chicago,Manager,123"
Myclients(1)="John Smith,New York,Accountant,124"
Myclients(2)="George Smith,Chicago,Administration,245"
Myclients(3)="Sam Smith,Dallas,Consultant,567"
• SearchFor="Chicago"
• Mydata=join(filter(Myclients,SearchFor,True,1),"/")
• Createtable()
%>
• This code in combination with Createtable() Subroutine in the previus example will
display only the clients from Chicago. The SearchFor variable may be obtained from a
form.
search.asp
<% if request.form="" them %>
<form method=post action=search.asp>
<input type=text name=keyword>
<input type=Submit value=Search>
</form>
<%
else
Toredirect()
end if
%>
<%
Sub Toredirect()
dim Myinfo(4)
Myinfo (0) = "Asp tutorial for beginners"
Myinfo (1) = "Displaying Date Time and Text"
Myinfo (2) = "Using Variables and Forms"
Myinfo (3) = "If...Then and For...Next instructions"
Myinfo (4) = "Do...Loop and Select...Case instructions"
dim MyURL(4)
MyURL (0) = "http://www.asptutorial.info"
MyURL (1) = "http://www.asptutorial.info/Datetime.htm"
MyURL (2) = "http://www.asptutorial.info/Forms.htm"
MyURL (3) = "http://www.asptutorial.info/if_then-for_next.htm"
MyURL (4) = "http://www.asptutorial.info/Do_loop-Select_case.htm"
Numberofpairs=ubound(Myinfo)
For n=0 to Numberofpairs
if inStr(Myinfo (n), request.form ("keyword"))>0 then
Response.redirect(MyURL(n))
end if
Next
We are trying this tutorial to be simple, so in this page we will request imagenes from a ".asp"
page, but the imagen will not be newly generated. The images will be already saved in our
server .
showpicture.html
<html> 1
<title>My picture</title> 2
<body> 3
4
<img src=mypicture.asp> 5
6
</body> 7
</html> 8
mypicture.asp
<% response.ContentType ="image/GIF" %> 1
<!--#include virtual="mypicture.gif" --> 2
• In the first file (showpicture.html) we have include in the html code the source for our
picture ("mypicture.asp", instead of "mypicture.gif").
• In the response page, first we have indicated whith kind of ContentType we are sending
to the client (this time "image/GIF", and then by using "include/virtual" the file is send
(in this case all files are in the same directory)
• session ("ad"): will be used to save a number, which is needed to determinate which ad to
show each time
• session ("linkto"): will be used to save the link corresponding to the ad shown.
mypage.html
<html> 1
<title>My page</title> 2
<body> 3
4
<a href=adrotatorlink.asp><img src=mypicture.asp NOSAVE></a> 5
6
</body> 7
</html> 8
mypictureasp
<% 1
if session("ad")="" then 2
session("ad")=0 3
end if 4
5
if session("ad")=5 then 6
session("ad")=1 7
else 8
session("ad")=session("ad")+1 9
end if 10
11
response.ContentType ="image/GIF" 12
%> 13
14
<% Select Case session("ad") %> 15
<% case 1 16
session("linkto")="http://linkto1.com" %> 17
<!--#include virtual="picture1.gif" --> 18
<% case 2 19
session("linkto")="http://linkto2.com" %> 20
<!--#include virtual="picture2.gif" --> 21
<% case 3 22
session("linkto")="http://linkto3.com" %> 23
<!--#include virtual="picture3.gif" --> 24
<% case 4 25
session("linkto")="http://linkto4.com" %> 26
<!--#include virtual="picture4.gif" --> 27
<% case 5 28
session("linkto")="http://linkto5.com" %> 29
<!--#include virtual="picture5.gif" --> 30
<% End select %> 31
adrotatorlink.asp
response.redirect(session("linkto")) 1
"mypage.html"
At "mypage.html" we have include the regular HTML code to show a picture. We have used
within the code the instruction "NOSAVE", so the picture will not be saved in the clients cache.
"mypicture.asp"
"adrotatorlink.asp"
After clicking the corresponding picture, and as we have already save the corresponding URL at
session('linkto"), we will redirect the visitor to the correct URL.
NOTE: By using "NOSAVE" code in our page, the client will no save the picture in the cache
of the computer. It may be a problem for us: let´s suppose we have include this the same code in
several pages within our site. Each time we visit a new page, session ("linkto") will be defined
again, but in case the visitor clicks the back bottom of the browser and the picture show is the
same one it was shown in our previous visit, when clicking the visitor will be redirect to a non-
correct URL.