CGI Programming - O'Reilly.pdf

(1546 KB) Pobierz
CGI Programming on the World Wide Web
Chapter 1
1. The Common Gateway Interface (CGI)
1.1 What Is CGI?
As you traverse the vast frontier of the World Wide Web, you will come across documents that make
you wonder, "How did they do this?" These documents could consist of, among other things, forms
that ask for feedback or registration information, imagemaps that allow you to click on various parts
of the image, counters that display the number of users that accessed the document, and utilities that
allow you to search databases for particular information. In most cases, you'll find that these effects
were achieved using the Common Gateway Interface, commonly known as CGI.
One of the Internet's worst-kept secrets is that CGI is astoundingly simple. That is, it's trivial in
design, and anyone with an iota of programming experience can write rudimentary scripts that work.
It's only when your needs are more demanding that you have to master the more complex workings of
the Web. In a way, CGI is easy the same way cooking is easy: anyone can toast a muffin or poach an
egg. It's only when you want a Hollandaise sauce that things start to get complicated.
CGI is the part of the Web server that can communicate with other programs running on the server.
With CGI, the Web server can call up a program, while passing user-specific data to the program
(such as what host the user is connecting from, or input the user has supplied using HTML form
syntax). The program then processes that data and the server passes the program's response back to
the Web browser.
CGI isn't magic; it's just programming with some special types of input and a few strict rules on
program output. Everything in between is just programming. Of course, there are special techniques
that are particular to CGI, and that's what this book is mostly about. But underlying it all is the simple
model shown in Figure 1.1 .
15195191.025.png 15195191.001.png 15195191.002.png 15195191.003.png 15195191.004.png
Figure 1.1: Simple diagram of CGI
Acknowledgments
CGI Applications
15195191.005.png 15195191.006.png 15195191.007.png 15195191.008.png 15195191.009.png 15195191.010.png 15195191.011.png
Chapter 1
The Common Gateway Interface
(CGI)
1.2 CGI Applications
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.
Forms
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.
Figure 1.2: Simple form illustrating different widgets
[Graphic:
Figure 1-2]
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.
Gateways
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 .
15195191.012.png 15195191.013.png 15195191.014.png 15195191.015.png
 
Figure 1.3: A gateway to a database
[Graphic:
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 Documents
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.
What Is CGI?
Some Working CGI
Applications
15195191.016.png 15195191.017.png 15195191.018.png 15195191.019.png 15195191.020.png 15195191.021.png
Zgłoś jeśli naruszono regulamin