Wednesday, October 28, 2009

Section 7.3. Server Information










7.3. Server Information









The $_SERVER array contains a lot of useful information from the web server. Much of this information comes from the environment variables required in the CGI specification (http://hoohoo.ncsa.uiuc.edu/cgi/env.html).


Here is a complete list of the entries in $_SERVER that come from CGI:



SERVER_SOFTWARE


A string that identifies the server (e.g., "Apache/1.3.33 (Unix) mod_perl/1.26 PHP/5.0.4").


SERVER_NAME


The hostname, DNS alias, or IP address for self-referencing URLs (e.g., "www.example.com").


GATEWAY_INTERFACE


The version of the CGI standard being followed (e.g., "CGI/1.1").


SERVER_PROTOCOL


The name and revision of the request protocol (e.g., "HTTP/1.1").


SERVER_PORT


The server port number to which the request was sent (e.g., "80").


REQUEST_METHOD


The method the client used to fetch the document (e.g., "GET").


PATH_INFO


Extra path elements given by the client (e.g., "/list/users").


PATH_TRANSLATED


The value of PATH_INFO, translated by the server into a filename (e.g., "/home/httpd/htdocs/list/users").


SCRIPT_NAME


The URL path to the current page, which is useful for self-referencing scripts (e.g., "/~me/menu.php").


QUERY_STRING


Everything after the ? in the URL (e.g., "name=Fred+age=35").


REMOTE_HOST


The hostname of the machine that requested this page (e.g., "dialup-192-168-0-1.example.com"). If there's no DNS for the machine, this is blank and REMOTE_ADDR is the only information given.


REMOTE_ADDR


A string containing the IP address of the machine that requested this page (e.g., "192.168.0.250").


AUTH_TYPE


If the page is password-protected, this is the authentication method used to protect the page (e.g., "basic").


REMOTE_USER


If the page is password-protected, this is the username with which the client authenticated (e.g., "fred"). Note that there's no way to find out what password was used.


REMOTE_IDENT


If the server is configured to use identd (RFC 931) identification checks, this is the username fetched from the host that made the web request (e.g., "barney"). Do not use this string for authentication purposes, as it is easily spoofed.


CONTENT_TYPE


The content type of the information attached to queries such as PUT and POST (e.g., "x-url-encoded").


CONTENT_LENGTH


The length of the information attached to queries such as PUT and POST (e.g., 3952).


The Apache server also creates entries in the $_SERVER array for each HTTP header in the request. For each key, the header name is converted to uppercase, hyphens (-) are turned into underscores (_), and the string "HTTP_" is prepended. For example, the entry for the User-Agent header has the key "HTTP_USER_AGENT." The two most common and useful headers are:



HTTP_USER_AGENT


The string the browser used to identify itself (e.g., "Mozilla/5.0 (Windows 2000; U) Opera 6.0 [en]")


HTTP_REFERER


The page the browser said it came from to get to the current page (e.g., "http://www.example.com/last_page.html")












No comments: