PHP中$_SERVER的详细参数与说明

PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后使用。

$_SERVER['PHP_SELF'] 
#当前正在执行脚本的文件名/返回当前网页的相对路径,与 document root相关。如:/lianxi/servervalues.php 
$_SERVER['argv'] 
#传递给该脚本的参数。如:Array
$_SERVER['argc'] 
#包含传递给程序的命令行参数的个数(如果运行在命令行模式)。如:0
$_SERVER['GATEWAY_INTERFACE'] 
#服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
$_SERVER['SERVER_NAME']
#当前运行脚本所在服务器主机的名称。如:"www.test.com"
$_SERVER['SERVER_SOFTWARE'] 
#服务器标识的字串,在响应请求时的头部中给出。
$_SERVER['SERVER_PROTOCOL'] 
#请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
$_SERVER['REQUEST_METHOD']
#访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
$_SERVER['QUERY_STRING']
#查询(query)的字符串。

$_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: 头部的内容。如:“www.test.com:8899”
$_SERVER['HTTP_REFERER'] 
#链接到当前页面的前一页面的 URL 地址。如:http://localhost/lianxi/ 
$_SERVER['HTTP_USER_AGENT'] 
#当前请求的 User_Agent: 头部的内容。如:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727) 
$_SERVER['HTTPS']
#如果通过https访问,则被设为一个非空的值(on),否则返回off
$_SERVER['REMOTE_ADDR'] 
#正在浏览当前页面用户的 IP 地址。
$_SERVER['REMOTE_HOST'] 
#正在浏览当前页面用户的主机名。
$_SERVER['REMOTE_PORT'] 
#用户连接到服务器时所使用的端口。
$_SERVER['SCRIPT_FILENAME'] 
#当前执行脚本的绝对路径名。
$_SERVER['SERVER_ADMIN'] 
#管理员信息
$_SERVER['SERVER_PORT']
#服务器所使用的端口,如:80
$_SERVER['SERVER_SIGNATURE'] 
#包含服务器版本和虚拟主机名的字符串。
$_SERVER['PATH_TRANSLATED'] 
#当前脚本所在文件系统(不是文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME'] 
#包含当前脚本的路径。这在页面需要指向自己时非常有用。
$_SERVER['REQUEST_URI']
#访问此页面所需的 URI。例如,“/index.html”。
$_SERVER['PHP_AUTH_USER']
#当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
$_SERVER['PHP_AUTH_PW']
#当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
$_SERVER['AUTH_TYPE']
#当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。

$_SERVER["PATH"]=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Adobe\AGL;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\php;C:\php\ext 
$_SERVER["SystemRoot"]=C:\WINDOWS 
$_SERVER["COMSPEC"]=C:\WINDOWS\system32\cmd.exe 
$_SERVER["PATHEXT"]=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH 
$_SERVER["WINDIR"]=C:\WINDOWS 

$_SERVER["SERVER_SIGNATURE"]= Apache/2.0.55 (Win32) PHP/5.1.1 Server at localhost Port 80 //使用的何服务器 

$_SERVER["SERVER_SOFTWARE"]=Apache/2.0.55 (Win32) PHP/5.1.1 
$_SERVER["SERVER_ADDR"]=127.0.0.1 
$_SERVER["REMOTE_ADDR"]=127.0.0.1 
$_SERVER["DOCUMENT_ROOT"]=D:/lianxi \\网站的主目录 
$_SERVER["SERVER_ADMIN"][email protected] \\安装APACHE时设置的邮箱 
$_SERVER["SCRIPT_FILENAME"]=D:/lianxi/lianxi/servervalues.php \\当前的网页的绝对路径, 
$_SERVER["REMOTE_PORT"]=1076 \\远程端口 
$_SERVER["GATEWAY_INTERFACE"]=CGI/1.1 
$_SERVER["SERVER_PROTOCOL"]=HTTP/1.1 
$_SERVER["REQUEST_METHOD"]=GET 
$_SERVER["QUERY_STRING"]=\\获取?号后面的内容 
$_SERVER["REQUEST_URI"]=例子:/lianxi/servervalues.php?a=1&b=2 
$_SERVER["SCRIPT_NAME"]=例子:/lianxi/servervalues.php 
$_SERVER["REQUEST_TIME"]=1179190013 \\运行时间 单位为十万分之一毫秒 

PHP中$_SERVER的详细参数与说明_第1张图片

PHP中$_SERVER的详细参数与说明_第2张图片

探测脚本:
<?php 
foreach($_SERVER as $asd =>$values) { 
echo("\$_SERVER[\"$asd\"]=".$values."</p>"); 

}


【1】.$_SERVER存储当前服务器信息,其中有几个值 如$_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"] 和$_SERVER["PHP_SELF"]常常容易混淆,以下通过实例详解$_SERVER函数中 QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF变量区别,掌握这四者之间的关系,便于在实际应用中正确获取所需要的值,供参考。 
1,$_SERVER["QUERY_STRING"] 说明:查询(query)的字符串 ,获取查询语句,实例中可知,获取的是?后面的值
2,$_SERVER["REQUEST_URI"] 说明:访问此页面所需的URI ,如:获取http://www.test.com后面的值,包括/
3,$_SERVER["SCRIPT_NAME"] 说明:获取当前脚本的路径,如:index.php
4,$_SERVER["PHP_SELF"] 说明:当前正在执行脚本的文件名 

实例: 
1,http://www.test.com/ (直接打开主页) 
结果: 
$_SERVER["QUERY_STRING"] = “” 
$_SERVER["REQUEST_URI"] = “/” 
$_SERVER["SCRIPT_NAME"] = “/index.php” 
$_SERVER["PHP_SELF"] = “/index.php” 
2,http://www.test.com/?p=222 (附带查询) 
结果: 
$_SERVER["QUERY_STRING"] = “p=222″ 
$_SERVER["REQUEST_URI"] = “/?p=222″ 
$_SERVER["SCRIPT_NAME"] = “/index.php” 
$_SERVER["PHP_SELF"] = “/index.php” 
3,http://www.test.com/index.php?p=222&q=biuuu 
结果: 
$_SERVER["QUERY_STRING"] = “p=222&q=biuuu” 
$_SERVER["REQUEST_URI"] = “/index.php?p=222&q=biuuu” 
$_SERVER["SCRIPT_NAME"] = “/index.php” 
$_SERVER["PHP_SELF"] = “/index.php” 
总结一下,对于QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF,深入了解将有利于我们 在$_SERVER函数中正确调用这四个值。通过实例详解$_SERVER函数中 QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF掌握四个变量之间的区别。

【2】.$_SERVER中的SERVER_NAME 和HTTP_HOST的区别
相同点:
当满足以下三个条件时,两者会输出相同信息。
1. 服务器为80端口
2. apache的conf中ServerName设置正确
3. HTTP/1.1协议规范
不同点:
1. 通常情况:
$_SERVER["HTTP_HOST"] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。
$_SERVER["SERVER_NAME"] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值。
2. 当服务器为非80端口时:
$_SERVER["HTTP_HOST"] 会输出端口号,例如:mimiz.cn:8080
$_SERVER["SERVER_NAME"] 会直接输出ServerName值
因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT
3. 当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时:
httpd.conf配置如下:
<virtualhost *>
ServerName mimiz.cn
ServerAlias www.mimiz.cn
</virtualhost>
客户端访问域名www.mimiz.cn
_SERVER["HTTP_HOST"] 输出 www.mimiz.cn
_SERVER["SERVER_NAME"] 输出 mimiz.cn
所以,在实际程序中,应尽量使用_SERVER["HTTP_HOST"] ,比较保险和可靠。

【3】.$_SERVER当前完整url的写法

"http://".$_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']; 


你可能感兴趣的:(PHP,server)