Link: up
   Link: prev
   Link: next

                                              Perl in a Nutshell

   Previous: 9.3 Extra Path           Chapter 9   Next: 10. The CGI.pm Module 
   Information                       CGI Overview 

    

   --------------------------------------------------------------------------

9.4 CGI Environment Variables

   Most 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 (via the %ENV hash in Perl).
   The table below lists 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_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.                             |
   |--------------------+---------------------------------------------------------------------------------|
   |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_COOKIE         |A list of cookies defined for that URL.                                          |
   |--------------------+---------------------------------------------------------------------------------|
   |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 read 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.                                  |
   |--------------------+---------------------------------------------------------------------------------|
   |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 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).|
   |--------------------+---------------------------------------------------------------------------------|
   |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 number of the server protocol.                             |
   |--------------------+---------------------------------------------------------------------------------|
   |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 << EOF
 Content-type: text/html

 <HTML>
 <HEAD><TITLE>About this Server</TITLE></HEAD>
 <BODY><H1>About this Server</H1>
 <HR><PRE>
 Server Name:        $ENV{'SERVER_NAME'}<BR>
 Running on Port:    $ENV{'SERVER_PORT'}<BR>
 Server Software:    $ENV{'SERVER_SOFTWARE'}<BR>
 Server Protocol:    $ENV{'SERVER_PROTOCOL'}<BR>
 CGI Revision:       $ENV{'GATEWAY_INTERFACE'}<BR>
 <HR></PRE>
 </BODY></HTML>

   The preceding program outputs five environments as an HTML document. In Perl, you can access the
   environment variables with the %ENV hash. Here's typical output of the program:

 <HTML>
 <HEAD><TITLE>About this Server</TITLE></HEAD>
 <BODY><H1>About this Server</H1>
 <HR><PRE>
 Server Name:          www.whatever.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: 9.3 Extra Path          Perl in a Nutshell  Next: 10. The CGI.pm 
   Information                                                         Module 
   9.3 Extra Path Information            Book Index     10. The CGI.pm Module 

   --------------------------------------------------------------------------

   [ Library Home | Perl in a Nutshell | Learning Perl | Learning Perl on Win32 | Programming Perl |
   Advanced Perl Programming | Perl Cookbook ]