CGI turns the Web from a simple collection of static
hypermedia documents into a whole new interactive medium, in which
users can ask questions and run applications. Let's take a look
at some of the possible applications that can be designed using
CGI.
One of
the most prominent uses of CGI is in processing forms. Forms are
a subset of HTML that allow the user to supply
information. The forms interface makes Web browsing an interactive
process for the user and the provider. Figure 1.2 shows a simple
form.
As can be seen from the figure, a number
of graphical widgets are available for form creation, such as radio
buttons, text fields, checkboxes, and selection lists. When the
form is completed by the user, the Submit Order! button is used
to send the information to the server, which executes the program
associated with the particular form to "decode" the data.
Generally,
forms are used for two main purposes. At their simplest, forms can
be used to collect information from the user. But they can also
be used in a more complex manner to provide back-and-forth interaction.
For example, the user can be presented with a form listing the various
documents available on the server, as well as an option to search
for particular information within these documents. A CGI program
can process this information and return document(s) that match the
user's selection criteria.
Chapter 4, Forms and CGI, discusses forms in detail, and
Chapter 7, Advanced Form Applications, shows examples of incorporating forms into
several robust applications.
Web
gateways are programs
or scripts used to access information that is not directly readable
by the client. For example, say you have an Oracle database that
contains baseball statistics for all the players on your company
team and you would like to provide this information on the Web.
How would you do it? You certainly cannot point your client to the
database file (i.e., open the URL associated with the file) and
expect to see any meaningful data.
CGI provides a solution to the problem in the form of a gateway. You
can use a language such as oraperl (see
Chapter 9, Gateways, Databases, and Search/Index Utilities, for more information) or a DBI extension to Perl
to form SQL queries to read the information contained within the
database. Once you have the information, you can format and send it to
the client. In this case, the CGI program serves as a gateway to the
Oracle database, as shown in Figure 1.3.
Similarly, you can write gateway programs
to any other Internet information service, including Archie, WAIS,
and NNTP (Usenet News). Chapter 10, Gateways to Internet Information Servers, shows
examples of interacting with other Internet services. In addition,
you can amplify the power of gateways by using the forms interface
to request a query or search string from the user to retrieve and
display dynamic, or virtual,
information. We will discuss these special documents next.
Virtual, or
dynamic, document creation is at the heart of CGI. Virtual documents
are created on the fly in response to a user's information request.
You can create virtual HTML, plain text, image,
and even audio documents. A simple example of a virtual document
could be something as trivial as this:
Welcome to Shishir's WWW Server!
You are visiting from diamond.com. The load average on this machine is 1.25.
Happy navigating!
In
this example, there are two pieces of dynamic information: the alphanumeric
address (IP name) of the remote user and the load average on the
serving machine. This is a very simple example, indeed!
On
the other hand, very complex virtual documents can be created by
writing programs that use a combination of graphics libraries,
gateways, and forms. As a more sophisticated example, say you are
the manager of an art gallery that specializes in selling replicas
of ancient Renaissance paintings and you are interested in presenting
images of these masterpieces on the Web. You start out by creating
a form that asks for user information for the purpose of promotional
mailings, presents a search field for the user to enter the name
of a painting, as well as a selection list containing popular paintings.
Once the user submits the form to the server, a program can email
the user information to a certain address, or store it in a file.
And depending on the user's selection, either a message stating
that the painting does not exist or an image of the painting can
be displayed along with some historical information located elsewhere
on the Internet.
Along with the picture and history,
another form with several image processing options to modify the
brightness, contrast, and/or size of the picture can be displayed.
You can write another CGI program to modify the image properties
on the fly using certain graphics libraries, such as gd,
sending the resultant picture to the client.
This is
an example of a more complex CGI program using many aspects
of CGI programming. Several such examples will be presented in this
book.