$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。这也就意味着大量的此类变量都会在<a href="http://www.faqs.org/rfcs/rfc3875" target="_blank">CGI 1.1 规范</a>中说明,所以应该仔细研究一下。
1、$_SERVER["HTTP_HOST"]
当前访问的域名,当端口号非80时会带上端口号。
2、$_SERVER["SERVER_NAME"]
手册里说:如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。
一般是输出当前访问的域名,不带端口号。网上有文章说(作者说经过测试):“默认情况下直接输出apache的配置文件httpd.conf中的ServerName值”。可是我测试时发现并非这样,依旧只是输出访问的域名。我的环境:Win7+Apache2.2.8+PHP5.4.23
3、$_SERVER["REDIRECT_STATUS"]:当使用重定向时,能获取到这个元素的值。这个在多个错误页面指向同个页面的时候很有用,如:
文件:.htaccess
# .htaccess file.
ErrorDocument 404 /error-msg.php
ErrorDocument 500 /error-msg.php
ErrorDocument 400 /error-msg.php
ErrorDocument 401 /error-msg.php
ErrorDocument 403 /error-msg.php
# End of file.
文件: error-msg.php
<?php
$HttpStatus = $_SERVER["REDIRECT_STATUS"] ;
if($HttpStatus==200) {
#some code
}
if($HttpStatus==400) {print "Bad HTTP request ";}
if($HttpStatus==401) {print "Unauthorized – Iinvalid password";}
if($HttpStatus==403) {print "Forbidden";}
if($HttpStatus==500) {print "Internal Server Error";}
if($HttpStatus==404) {print "404. Not found.";}
?>
4、$_SERVER["HTTP_USER_AGENT"]
当前请求头中 User-Agent: 项的内容,如果存在的话。该字符串表明了访问该页面的用户代理的信息,也就是客户端浏览器的一些信息,可以通过 get_browser() 来获取更详细的信息
5、$_SERVER["SERVER_ADDR"]
浏览当前页面的用户的 IP 地址
6、$_SERVER["REMOTE_ADDR"]
服务器IP地址
7、$_SERVER["DOCUMENT_ROOT"]
站点根目录
8、$_SERVER["SCRIPT_FILENAME"]
当前访问页面的完整磁盘文件路径
9、$_SERVER["REQUEST_TIME"]
请求开始时的时间戳。从 PHP 5.1.0 起可用,REQUEST_TIME_FLOAT则能获取精确到小数点后两位的值
10、$_SERVER["QUERY_STRING"]
查询字符串,俗称的参数,即网址里第一个问号后面的字符串。
11、$_SERVER["REQUEST_URI"]
网址里域名后开始的字符串,包括第一个斜杠/
12、$_SERVER["SCRIPT_NAME"]
当前脚本的路径与名称,相对于站点根目录,当需要指向当前页面时,此数据非常有用。
13、$_SERVER["PHP_SELF"]
网址中域名后第一个问号前的字符串
14、$_SERVER["HTTP_REFERER"]
引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。
15、$_SERVER["argv"]
传递给该脚本的参数的数组。