The Common Gateway Interface (CGI) emerged as the first way
to present dynamically generated information on the World Wide Web.
CGI allows the computer to generate Web pages instantly at the user's
request rather than being written by someone in advance. And at
the time of this writing, it remains the only stable and well-understood
method for creating such pages. Java presents problems that have
not yet been solved. Other products are currently just in the announcement
stage.

CGI is fun. You can get a kick out of writing scripts that
perform tricks for you, and the users enjoy the spice the scripts
add to your Web pages. But CGI has a serious side too: It lets the
Internet offer the kind of interactive, user-driven applications
that modern computer users have come to expect. CGI opens up an
entire class of modern applications to the Web.

Today's computer users expect custom answers to particular
questions. Gone are the days when people were satisfied by the computing
center staff passing out a single, general report to all users.
Instead, each salesperson, manager, and engineer wants to enter
specific queries and get up-to-date responses. And if a single computer
can do that, why not the Web?

This is the promise of CGI. You can display sales figures
for particular products month by month, as requested by your staff,
using beautiful pie charts or plots. You can let customers enter
keywords in order to find information on your products. You can
also offer day-to-day conveniences, like collecting comments from
users, offering them searches through your archives, and letting
them sign your guestbook.

So, on to the book. What will you encounter here? A variety
of powerful applications that you can use and that will serve as
models for your own CGI scripts. Among the complete applications
in the book are an animated clock, a search tool, a survey, a quiz
program, a game, a gateway to Usenet News, and an appointment calendar
based on a clickable imagemap.

If you want to set up your own database and can't afford a
commercial product like Oracle, you can use the Sprite extension
to Perl that I wrote. Sprite offers a subset of SQL commands with
a flat file as the database. I also offer a debugging program called
CGI Lint, and a program that lets you write and parse extensions
to HTML. I wrote the latter program to support
my quiz application, but you can adapt it to other purposes without
much trouble. Appendix E, Applications, Modules, Utilities, and Documentation, lists where you can get Sprite
and CGI Lint.

But the most important tool I hope to give you is not any
particular program, but a thorough understanding of CGI's potential
and how to invoke it. The ideas in these programs should become
yours for any purpose you want, no matter what operating system
or language you use. The old adage about "teaching someone how to
fish" may no longer be politically correct, in a world of dangerously
depleted fish stocks, but the metaphor describes what I want to
do. The techniques I show in this book are fundamental CGI practices:
passing information between client (browser) and server, interacting
with databases through SQL, generating graphics, writing gateways
to existing programs, and storing information while handling multiple
forms.