Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

1.

INTRODUCTION:

The Common Gateway Interface (CGI) is a standard for


interfacing external applications with information servers, such as HTTP or
Web servers. A plain HTML document that the web daemon retrieves is
static, which means it exits in a constant state: a text file that doesn’t change.
A CGI program, on the other hand, is executed in real-time, so that it can
output dynamic information.

For example, you have used a fill-out or an image map on Web,


you have probably used a gateway script without even knowing it. With CGI
Scripts, everything seems to happen automatically. You enter data and click
a mouse button, and a moment later, a result is displayed. What happens
between the click of the mouse and the display of the result is what CGI
does.

S
E
CLIENT R CGI
1 2
V
E
R

3
4

Steps

• Client sends request to the server


• Server does not have the capacity to process the client request
• So, it inturn contacts some server side program like CGI
• Now CGI process the client request and sends response back to client
• Then Server sends the response back to client in the form of html page

CGI 1
2.WHAT ARE CGI SCRIPTS?

CGI scripts are external programs that run on the Web server. CGI
scripts are used to create highly interactive Web publications. The standard
that defines how external programs are used on Web servers and how they
interact with other applications is the Common Gateway Interface. The three
keywords that comprise the name of the standard---common, gateway and
interface---describe how the standard works.

Common: By specifying a common way for scripts to be


accessed, CGI enables anyone, regardless of platform, to pass information to
a CGI script.

Gateway: By defining the link (gateway) between the script,


the server, and other applications, CGI makes it possible for external
program to accept generalized input and pass information to other
applications.

Interface: By describing the external programs can be accessed


by users (the interface), CGI reduces the complex process of interfacing with
external programs to a few basic procedures.

3.CHOOSING A PROGRAMMING LANGUAGE FOR


SCRIPTS:

CGI scripts are also called gateway scripts. One can write
gateway scripts in almost any computer languages that produce an
executable file. The most common language for scripts is the following:

CGI 2
Bourne Shell
C Shell
C/C++ Shell
PERL
Python
Tcl
Visual Basic

Scripts located on server called server-side scripts (CGI). In the


contrast, some scripts, called client-side scripts, are embedded in HTML
documents and executed by browser. JavaScript and VB Script are two up
and coming client-side scripting languages.

• The most programming language to write script is one


that works with Web server and meet needs. Preferably,
the language should already be available on the Web
server and user should be proficient in it (or at least have
some knowledge). The most user input in the form of text
that most manipulated in some way, which makes
supports for text strings and their manipulations critical.
PERL, C/C++, and UNIX shell are the most popular
languages for scripts. PERL is rapidly becoming the
widely used language for CGI scripts.

4.WHY CGI SCRIPTS?

The primary reason to use CGI scripts is to automate what


would otherwise be a manual and probably time consuming process. Using
CGI scripts benefits both developer and user. The user gets simplicity,
automated response to input, easy ways to make submissions, and fast ways
to conduct searches. Gateway scripts enable to automatically process orders,
queries, and much more. CGI programs are commonly used to do the
following tasks:

CGI 3
*Process input, typically search strings, and output a document
containing the results of the search.
*Validate user identification and password information and
grant readers access to restricted areas of the Web site.
*Process input from image maps and direct the reader to
associated documents.
*Add the reader’s feedback or survey responses to a database or
index.
*Track visitors to Web pages and post continually updated
numbers to the Web pages as it is accessed.
*Generate documents based on the type of browser the reader is
using.
*Perform post-submission processing and output results for the
reader.

5.HOW CGI SCRIPTS WORK?

Gateway scripts are used to process input submitted by readers


of Web publications. The input usually consists of environment variables
that the Web server passes to the gateway scripts. Environment variables
describe the information being passed, such as the version of CGI used on
the server, the type data, the size of the data, and other important
information. Gateway scripts can also receive command-line arguments and
standard input. To execute a CGI script, the script must exist on the server
that referencing. One must also have a server that is both capable of
executing gateway scripts and configured to handle the type of script one to
use.

Readers pass information to a CGI script by activating a link


containing a reference to the script. The gateway script processes the input
and formats the results as output that the Web server can use. The Web
server takes the results and passes them back to the reader’s browser. The
browser displays the output for the reader.
The output from a gateway script begins with header containing
a directive to the server. Currently, the three valid server directives are
Content-type, Location, and Status. The header can consist of a directive in

CGI 4
the format of an HTTP header followed by a blank line. The blank line
separates the header from the data passing back to the browser. Output
containing Location and Status directives usually consists of a single line
because the directive contained on the Location or Status line is all that
server, and when there is no subsequent date, no need to insert a blank line.
The server interprets the output, sets environment variables, and passes the
output to the client.

Any transaction between a client and server has many parts.


These parts can be broken down into following steps:

1.Browser shows the HTML document containing the form.


2.User enters data into the form as need then click the Submit button.
3.Optionally, a script in the browser performs client-side validation of
the form’s contents.
4.The browser decodes the URL and contacts the server.
5.Browser requests the document file from the server.
6.The server translates the URL into a path and filename.
7.The server “realizes” that the URL points to a program instead of a
Static file.
8.The server prepares the environment and launches script.
9.The script executes and reads the environment variables and
STDIN.
10.The script sends the proper MIME headers to STDOUT for the
Forthcoming content.
11.The script sends the rest of its output to STDOUT and terminates.
12.The server notices that the script has finished and closes the
Connection to browser.
13.Browser displays the output from the script.

CGI 5
6.INPUT TO CGI SCRIPTS:

When a user activates a link to gateway script, input is sent to


the server. The server formats this data into environment variables and
checks to see whether additional data was submitted via standard input
stream.

Environment variables:

Input to CGI scripts usually is in the form of environment


variables. The environment variables passed to gateway scripts are
associated with the browser requesting information from the server, the
server processing the request, and the data passed in the request.
Environment variables are case-sensitive. Although some environment
variables are system-specific, many environment variables are standard.
Environment variables are set automatically whenever reader input is passed
to a server.

Standard environment variables:

Variable Purpose

AUTH_TYPE Specifies the authentication method and is


Used to validate a user’s access.

CONTENT_LENGTH Used to provide a way of tracking the length


Of the data string as a numeric value.

CONTENT_TYPE Indicates the MIME type of data.

GATEWAY_INTERFACE Indicates which version of the CGI standard


The server is using.

CGI 6
HTTP_ACCEPT Indicates the MIME type content types the
browser will accept, as passed to the
gateway script via the server.

HTTP_USER_AGENT Indicates the type of browser used to send


the request, as passed to the gateway script
Via the server.

PATH_INFO Identifies the extra information included in


the URL after the identification of the
CGI script.
PATH_TRANSLATED Set by server based on the PATH_INFO
variable. The server translates the
PATH_INFO variable into this variable.

QUERY_STRING Set to the query string (if the URL contains a


query string).

REMOTE_ADDR Identifies the Internet Protocol address of


the remote computer making the request.

REMOTE_HOST Identifies the name of the machine making


the request.

REMOTE_IDENT Identifies the machine-making request.

REMOTE_USER Identifies the user name as authenticated by


the user.

REQUEST_METHOD Identifies the method by which request was


made.

SCRIPT_NAME Identifies the virtual path to the script being


executed.

CGI 7
SERVER_PORT Identifies the port number the server
received the request on.

SERVER_PROTOCOL Identifies the protocol of the request sent to


the server.

SERVER_SOFTWARE Identifies the Web server software.

CGI Standard Input:

Most users input sent to a Web server is used to sent environment


Variables, yet not all input fits neatly into an environment variable. When a
user submits data to be processed by a gateway script, this data is received
as an URL-encoded search string or through the standard input stream.

Sending data as standard input is the most direct way to send data.
The server opens the standard input stream and reads the specified amount
of data.

CGI INPUT:

Under HTTP 1.0, a two-submission method for forms exists. The


HTTP GET method uses URL-encoded search strings. When a server
receives an URL-encoded search string, the server assign the value of the
Search string to the QUERY_STRING environment variable.

The HTTP POST method uses the standard input streams. When
Receives data by the standard input stream, the server assigns the value with
the length of the input stream to the CONTENT_LENGTH variable.

CGI 8
7.CGI SCRIPT STRUCTURE:

When the server invokes script, the server passes information to


the script via environment variables and, in the case of POST via STDIN.

The basic structure of CGI application is straightforward


initialization, processing, output and termination ideally a script follows
these steps in this order.

1.The program begins.


2.The program calls do-initialize.
3.The program calls do-process.
4.The program calls do-output.
5.The program ends.

INITIALIZATION:

The first thing script must do when it starts is its input,


environment and state. Basic operating system environment information can
be obtained the usual way (e.g. from the system registry in the windows)

State information will come from the input rather than the
operating environment or static variables. Each time CGI scripts are
invoked, it’s as if they’ve never been invoked before. Every thing must be
initialized from scratch.

PROCESSING:

The processing, however, is the heart of your script. Processing


data means, generally, transforming it some how, in classical data processing
terminology, this is called the transform step because in batch-oriented
processing, the program reads a record, applies some rule to it (transforming
it), and then writes it back out.

CGI 9
OUTPUT:

In simple the output is usually a header and some HTML. More


complex scripts might output graphics, graphic mixed with text, or all the
information necessary to call the script again with some additional
information.

TERMINATION:

Termination is nothing more than cleaning up after your self


and quitting. If you’ve locked any files, you must release them letting the
program end. If you’ve allocated memory, semaphores, or others, you must
free them.

8.OUTPUT FROM CGI SCRIPT

After the script finishes processing the input, the script should
return output to the server. The server will then return the output to the
client. Generally, a blank line and a body in the form of HTTP response that
includes a header follow this output. Although the CGI header output is
strictly formatted, the body of the output is formatted in the manner you
specify in the header. For example the body can contain an HTML document
for the client display.

CGI HEADERS:

CGI headers contain directives. Your CGI script outputs these


directives are valid

1.content-type
2.location
3.status

CGI 10
A single header can contain one or all of the server directives,
your CGI script outputs these directives to the server. Although the header is
followed by blank line that separates the header from the body, the output
does not have to contain a body.

CONTENT TYPES USED IN CGI HEADERS:

The content-type field in a CGI header identifies the MIME


type of the data you are sending back to the client. Usually the data output
from a script is a fully formatted document, such as an HTML document.
Content-type: text/html.

LOCATIONS USED IN CGI HEADERS:

The output of your script doesn’t have to be a document created


within the script. You can reference any document on the web using the
location field by its URL. Server process location references wither directly
or indirectly depending on the location of the file. If the server can find the
file locally, it passes the file to specify a location in a script as follows:
Location: http://www.typress.com/

STATUS USED IN THE CGI HEADERS:

The status field passes a status line to the server for forwarding
to the client. The status code shows the general status as follows:

1. Not yet allocated


2. Success
3. Redirection
4. Client error
5. Server error

Although servers use many status codes, the status codes you pass to a
client via your CGI script are usually client error codes.

Basic hello world CGI script in C, with basic HTML output added

CGI 11
int main (int arc, char *arc[])
{
printf (“Content-type: text/html\n\n”);
printf (“<html>”);
printf (“<head>”);
printf (“<title>Hello, world!<title>\n”);
printf (“</head>”);
printf (“<body bgcolor=\”#FFFFFF\”>\n”);
printf(“<center><h1><Hello, World!<h1><center>\n”);
printf(“<body>\n”);
printf(“<html>\n”);
return(0);
}

9.CGI SCRIPT PORTABILITY


CGI programmers face two portability issues:
1.platform independence
2.server independence

Platform independence is the capability of the code to run without


modification on a hardware platform or operating system different from the
one for which it was written.

Server Independence is the capability of the code to run without


modification on another server with the same operating system.

Platform Independence:

The best way to keep CGI script is to use a commonly available


language and avoid platform-specific code. In practice, this means using
either C or perl and not doing anything much beyond formatting text and
outputting graphics.

However, platform independence isn’t the criterion to consider


when selecting a CGI platform. The speed of coding, the ease of

CGI 12
maintenance, and the capability to perform the chosen task should also be
considered.

If one of your mandates is the capability to move code among


platforms with a minimum of functions from the ANSI C libraries and avoid
making other operating system calls. Unfortunately, following this will limit
scripts basic functionality if you wrap your platform-dependent code in self-
contained routines; however, you minimize the work needed to port from
one platform to the next. A properly designed program can have any module
replaced in its entirely without affecting the rest of the program. Using these
guidelines, you may have to replace a subroutine or two, and you’ll certainly
have to recompile step is used. Learning to write Perl is easy than C

Server Independence:

Server independence is fairly easy to achieve, but for some


reason to be stumbling block to beginning scriptwriters. To be server
independence, script must run without modification on any server using the
same operating system. Only server-independence programs can be useful as
shareware or freeware a doubt, server-independence is a requirement for
commercial software.

The following are some rules of server-independence:

1.Don’t assume your environment.


2.Don’t assume privileges.
3.Don’t assume consistency of CGI variables.
4.Don’t assume version-specific information.
5.Don’t assume LAN or WAN configuration.
6.Don’t assume the availability of system objects.

CGI 13
10.CONCLUSION
The Common Gateway Interface opens the door for adding
advanced features to your Web publications. This workhorse running
quietly in the background less you use fill-out forms, database queries,
and index searches and create documents on the fly. You use CGI
whenever you want to open a two-way communication channel with
the reader. CGI enhancement to Web means extra for Web publishes.
Still, the payoff associated with CGI makes the extra effort truly
worthwhile.

CGI 14

You might also like