Webmaster in a Nutshell

Previous Chapter 11 Next
 

11. CGI Environment Variables

Much of the information needed by CGI programs is made available via UNIX environment variables. Programs can access this information as they would any environment variable (e.g., via the %ENV associative array in Perl). The table below lists the environment variables commonly available through CGI. However, since servers occasionally vary on the names of environment variables they assign, check with your own server documentation for more information.

Environment Variable Content Returned
AUTH_TYPE

The authentication method used to validate a user. See REMOTE_USER and REMOTE_IDENT.

CONTENT_LENGTH

The length of the query data (in bytes or the number of characters) passed to the CGI program through standard input.

CONTENT_TYPE

The media type of the query data, such as "text/html." See Chapter 20, Media Types and Subtypes, for a listing of commonly-used content types.

DOCUMENT_ROOT

The directory from which Web documents are served.

GATEWAY_INTERFACE

The revision of the Common Gateway Interface that the server uses.

HTTP_ACCEPT

A list of the media types that the client can accept.

HTTP_FROM

The email address of the user making the query (many browsers do not support this variable).

HTTP_REFERER

The URL of the document that the client points to before accessing the CGI program.

HTTP_USER_AGENT

The browser the client is using to issue the request.

PATH_INFO

Extra path information passed to a CGI program. See Chapter 9, CGI Overview, for more information on extra path information.

PATH_TRANSLATED

The translated version of the path given by the variable PATH_INFO.

QUERY_STRING

The query information passed to the program. It is appended to the URL following a question mark (?). See Chapter 9, CGI Overview for more information on query strings.

REMOTE_ADDR

The remote IP address from which the user is making the request.

REMOTE_HOST

The remote hostname from which the user is making the request.

REMOTE_IDENT

The user making the request.

REMOTE_USER

The authenticated name of the user making the query.

REQUEST_METHOD

The method with which the information request was issued (e.g., GET, POST, HEAD). See Chapter 9, CGI Overview and Chapter 17, HTTP Overview for more information on request methods.

SCRIPT_NAME

The virtual path (e.g., /cgi-bin/program.pl) of the script being executed.

SERVER_NAME

The server's hostname or IP address.

SERVER_PORT

The port number of the host on which the server is running.

SERVER_PROTOCOL

The name and revision of the information protocol the request came in with.

SERVER_SOFTWARE

The name and version of the server software that is answering the client request.

Here's a simple Perl CGI script that uses environment variables to display various information about the server:

#!/usr/local/bin/perl
print "Content-type: text/html", "\n\n";
print "<HTML>", "\n";
print "<HEAD><TITLE>About this Server</TITLE></HEAD>", "\n";
print "<BODY><H1>About this Server</H1>", "\n";
print "<HR><PRE>";
print "Server Name:       ", $ENV{'SERVER_NAME'}, "<BR>", "\n";
print "Running on Port:   ", $ENV{'SERVER_PORT'}, "<BR>", "\n";
print "Server Software:   ", $ENV{'SERVER_SOFTWARE'}, "<BR>", "\n";
print "Server Protocol:   ", $ENV{'SERVER_PROTOCOL'}, "<BR>", "\n";
print "CGI Revision:      ", $ENV{'GATEWAY_INTERFACE'}, "<BR>", "\n";
print "<HR></PRE>", "\n";
print "</BODY></HTML>", "\n";
exit (0);

The preceding program outputs the contents of five environment variables into an HTML document. In Perl, you can access the environment variables using the %ENV associative array. Here's a typical output of the program:

<HTML>
<HEAD><TITLE>About this Server</TITLE></HEAD>
<BODY><H1>About this Server</H1>
<HR><PRE>
Server Name:          ora.com
Running on Port:      80
Server Software:      NCSA/1.4.2
Server Protocol:      HTTP/1.0
CGI Revision:         CGI/1.1
<HR></PRE>
</BODY></HTML>


Previous Home Next
An Example Form Book Index Cookies

HTML: The Definitive Guide CGI Programming JavaScript: The Definitive Guide Programming Perl WebMaster in a Nutshell
Hosted by uCoz