12.4. 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). Table 12-1 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.
Table 12-1. CGI environment variables
Environment variable
|
Content returned
|
AUTH_TYPE
|
The authentication method used to validate a user. See REMOTE_IDENT
and REMOTE_USER.
|
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 17 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 the server
uses.
|
HTTP_ACCEPT
|
A list of the media types the client can
accept.
|
HTTP_COOKIE
|
A list of cookies defined for that URL. (See Chapter 17 for more
information.)
|
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 the client points to before accessing the CGI
program.
|
PATH_INFO
|
Extra path information passed to a CGI program.
|
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 (?).
|
REMOTE_ADDR
|
The IP address from which the user is making the
request.
|
REMOTE_HOST
|
The 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 17 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: oreilly.com
Running on Port: 80
Server Software: NCSA/1.4.2
Server Protocol: HTTP/1.1
CGI Revision: CGI/1.1
<HR></PRE>
</BODY></HTML>
| | | 12.3. Extra Path Information | | 13. Server Side Includes |
Copyright © 2003 O'Reilly & Associates. All rights reserved.
|
|