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.
|
Environment variable |
Content returned |
|---|---|
|
The authentication method used to validate a user. See REMOTE_IDENT and REMOTE_USER. |
|
|
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 |
|
|
GATEWAY_INTERFACE |
The revision of the Common Gateway Interface the server uses. |
|
HTTP_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 |
|
|
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 |
|
|
REMOTE_HOST |
|
|
REMOTE_IDENT |
|
|
REMOTE_USER |
|
|
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 |
|
|
SERVER_PORT |
|
|
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>
Copyright © 2003 O'Reilly & Associates. All rights reserved.