PHP中$_SERVER参数用法总结
最近没事,深入研究$_SERVER使用方法,做了一个PHP信息查看器
$_SERVER['PHP_SELF'] #当前执行脚本的文件名,与document root有关。例如,在地址为http://example.com/foo/bar.php的脚本中使用 $_SERVER['PHP_SELF']将得到/foo/bar.php。__FILE__常量包含当前(例如包含)文件的完整路径和文件名。从PHP4.3.0版本开始,如果 PHP以命令行模式运行,这个变量将包含脚本名。之前的版本该变量不可用。 - $_SERVER['argv'] #传递给该脚本的参数的数组。脚本以命令行方式运行时,argv变量传递给程序C语言样式的命令行参数。当通过GET方式调用时,该变量包含query string。 - $_SERVER['argc'] #包含命令行模式下传递给该脚本的参数的数目(如果运行在命令行模式下)。 - $_SERVER['GATEWAY_INTERFACE'] #服务器使用的CGI规范的版本;例如,“CGI/1.1”。 - $_SERVER['SERVER_ADDR'] #当前运行脚本所在的服务器的IP地址。 - $_SERVER['SERVER_NAME'] #当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。 #Note: 在Apache2里,必须设置 UseCanonicalName=On和ServerName。否则该值会由客户端提供,就有可能被伪造。上下文有安全性要求的环境里,不应该依赖此值。 - $_SERVER['SERVER_SOFTWARE'] #服务器标识字符串,在响应请求时的头信息中给出。 - $_SERVER['SERVER_PROTOCOL'] #请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。 - $_SERVER['REQUEST_METHOD'] #访问页面使用的请求方法;例如,“GET”, “HEAD”,“POST”,“PUT”。 #Note:如果请求方法为HEAD,PHP脚本将在发送Header头信息之后终止(这意味着在产生任何输出后,不再有输出缓冲)。 - $_SERVER['REQUEST_TIME'] #请求开始时的时间戳。从PHP5.1.0起可用。 - $_SERVER['REQUEST_TIME_FLOAT'] #请求开始时的时间戳,微秒级别的精准度。自PHP5.4.0开始生效。 - $_SERVER['QUERY_STRING'] #query string(查询字符串),如果有的话,通过它进行页面访问。 - $_SERVER['DOCUMENT_ROOT'] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。 - $_SERVER['HTTP_ACCEPT'] #当前请求头中Accept: 项的内容,如果存在的话。 - $_SERVER['HTTP_ACCEPT_CHARSET'] #当前请求头中Accept-Charset: 项的内容,如果存在的话。例如:“iso-8859-1,*,utf-8”。 - $_SERVER['HTTP_ACCEPT_ENCODING'] #当前请求头中Accept-Encoding: 项的内容,如果存在的话。例如:“gzip”。 - $_SERVER['HTTP_ACCEPT_LANGUAGE'] #当前请求头中Accept-Language: 项的内容,如果存在的话。例如:“en”。 - $_SERVER['HTTP_CONNECTION'] #当前请求头中Connection: 项的内容,如果存在的话。例如:“Keep-Alive”。 - $_SERVER['HTTP_HOST'] #当前请求头中Host: 项的内容,如果存在的话。 - $_SERVER['HTTP_REFERER'] #引导用户代理到当前页的前一页的地址(如果存在)。由user agent设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER的功能。简言之,该值并不可信。 - $_SERVER['HTTP_USER_AGENT'] #当前请求头中 User-Agent: 项的内容,如果存在的话。该字符串表明了访问该页面的用户代理的信息。一个典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。除此之外,你可以通过get_browser()来使用该值,从而定制页面输出以便适应用户代理的性能。 - $_SERVER['HTTPS'] #如果脚本是通过HTTPS协议被访问,则被设为一个非空的值。 #Note: 注意当使用IIS上的ISAPI方式时,如果不是通过HTTPS协议被访问,这个值将为off。 - $_SERVER['REMOTE_ADDR'] #浏览当前页面的用户的IP地址。 - $_SERVER['REMOTE_HOST'] #浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的REMOTE_ADDR。 #Note: 你的服务器必须被配置以便产生这个变量。例如在Apache中,你需要在httpd.conf中设置HostnameLookups On来产生它。参见 gethostbyaddr()。 - $_SERVER['REMOTE_PORT'] #用户机器上连接到Web服务器所使用的端口号。 - $_SERVER['REMOTE_USER'] #经验证的用户 - $_SERVER['REDIRECT_REMOTE_USER'] #验证的用户,如果请求已在内部重定向。 - $_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径。 #Note:如果在命令行界面(Command Line Interface, CLI)使用相对路径执行脚本,例如 file.php 或 ../file.php,那么 $_SERVER['SCRIPT_FILENAME'] 将包含用户指定的相对路径。 - $_SERVER['SERVER_ADMIN'] #该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。 - $_SERVER['SERVER_PORT'] #Web 服务器使用的端口。默认值为“80”。如果使用SSL安全连接,则这个值为用户设置的HTTP端口。 #Note:在Apache2里,为了获取真实物理端口,必须设置UseCanonicalName=On 以及UseCanonicalPhysicalPort=On。否则此值可能被伪造,不一定会返回真实端口值。上下文有安全性要求的环境里,不应该依赖此值。 - $_SERVER['SERVER_SIGNATURE'] #包含了服务器版本和虚拟主机名的字符串。 - $_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。 #Note: 自PHP4.3.2起,PATH_TRANSLATED在Apache2 SAPI模式下不再和Apache1一样隐含赋值,而是若Apache不生成此值,PHP便自己生成并将其值放入SCRIPT_FILENAME服务器常量中。这个修改遵守了CGI规范,PATH_TRANSLATED仅在PATH_INFO被定义的条件下才存在。 Apache2用户可以在httpd.conf中设置AcceptPathInfo=On来定义PATH_INFO。 - $_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。 - $_SERVER['REQUEST_URI'] #URI用来指定要访问的页面。例如 “/index.html”。 - $_SERVER['PHP_AUTH_DIGEST'] #当作为Apache模块运行时,进行HTTP Digest认证的过程中,此变量被设置成客户端发送的“Authorization”HTTP头内容(以便作进一步的认证操作)。 - $_SERVER['PHP_AUTH_USER'] #当PHP运行在Apache或IIS(PHP5是ISAPI)模块方式下,并且正在使用HTTP认证功能,这个变量便是用户输入的用户名。 - $_SERVER['PHP_AUTH_PW'] #当PHP运行在Apache或IIS(PHP5是ISAPI)模块方式下,并且正在使用HTTP认证功能,这个变量便是用户输入的密码。 - $_SERVER['AUTH_TYPE'] #当PHP运行在Apache模块方式下,并且正在使用HTTP认证功能,这个变量便是认证的类型。 - $_SERVER['PATH_INFO'] #包含由客户端提供的、跟在真实脚本名称之后并且在查询语句(query string)之前的路径信息,如果存在的话。例如,如果当前脚本是通过 URL http://www.example.com/php/path_info.php/some/stuff?foo=bar被访问,那么$_SERVER['PATH_INFO']将包含 /some/stuff。 - $_SERVER['ORIG_PATH_INFO'] #在被PHP处理之前,“PATH_INFO”的原始版本。
千行代码,Bug何处藏。 纵使上线又怎样,朝令改,夕断肠。