详解PHP预定义超全局数组变量$_SERVER

  作者:bea

PHP提供了几个预定义超全局数组变量,他们是$_SERVER,$_GET,$_POST,$_ENV,$_REQUEST,$_FILES,$_COOKIE,$_SESSION,$GLOBALS,这里我们来详细介绍$_SERVER这个超全局数组变量。 1,$_SERVER["QUERY_STRING"] 说明:查询(query)的字符串 2,$_SERVER["REQUEST_URI"] 说明:访问此页面所需的URI 3,$_SERV

PHP提供了几个预定义超全局数组变量,他们是$_SERVER,$_GET,$_POST,$_ENV,$_REQUEST,$_FILES,$_COOKIE,$_SESSION,$GLOBALS,这里我们来详细介绍$_SERVER这个超全局数组变量。

1,$_SERVER["QUERY_STRING"]
说明:查询(query)的字符串

2,$_SERVER["REQUEST_URI"]
说明:访问此页面所需的URI

3,$_SERVER["SCRIPT_NAME"]
说明:包含当前脚本的路径

4,$_SERVER["PHP_SELF"]
说明:当前正在执行脚本的文件名

实例:
1,http://www.xinge360.com/ (直接打开主页)
结果:
$_SERVER["QUERY_STRING"] = “”
$_SERVER["REQUEST_URI"] = “/”
$_SERVER["SCRIPT_NAME"] = “/index.php”
$_SERVER["PHP_SELF"] = “/index.php”

2,http://www.xinge360.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.xinge360.com/index.php?p=222&q=aichengxu
结果:
$_SERVER["QUERY_STRING"] = “p=222&q=aichengxu”
$_SERVER["REQUEST_URI"] = “/index.php?p=222&q=aichengxu”
$_SERVER["SCRIPT_NAME"] = “/index.php”
$_SERVER["PHP_SELF"] = “/index.php”
$_SERVER["QUERY_STRING"]获取查询语句,实例中可知,获取的是?后面的值
$_SERVER["REQUEST_URI"] 获取http://www.xinge360.com后面的值,包括/
$_SERVER["SCRIPT_NAME"] 获取当前脚本的路径,如:index.php
$_SERVER["PHP_SELF"] 当前正在执行脚本的文件名
当前url:”http://”.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']

总结一下,对于QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF,深入了解将有利于我们在$_SERVER函数中正确调用这四个值。通过实例详解$_SERVER函数中QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF掌握四个变量之间的区别。
1.
$_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言
显示:zh-cn

2.
$_SERVER['REMOTE_ADDR'] //当前用户 IP 。
显示:127.0.0.1

3.
$_SERVER['REMOTE_HOST'] //当前用户主机名
显示:

4
$_SERVER['REQUEST_URI'] //URL
显示:/test.php

5
$_SERVER['REMOTE_PORT'] //端口。
显示:3864

6
$_SERVER['SERVER_NAME'] //服务器主机的名称。
显示:127.0.0.1

7
$_SERVER['PHP_SELF']//正在执行脚本的文件名
显示:/test.php

8
$_SERVER['argv'] //传递给该脚本的参数。
显示:ARRAY

9
$_SERVER['argc'] //传递给程序的命令行参数的个数。
显示:0

10
$_SERVER['GATEWAY_INTERFACE']//CGI 规范的版本。
显示: CGI/1.1

11
$_SERVER['SERVER_SOFTWARE'] //服务器标识的字串
显示:Apache/2.0.52 (Win32) PHP/5.2.1

12
$_SERVER['SERVER_PROTOCOL'] //请求页面时通信协议的名称和版本
显示:HTTP/1.1

13
$_SERVER['REQUEST_METHOD']//访问页面时的请求方法
显示:GET

14
$_SERVER['QUERY_STRING'] //查询(query)的字符串。
显示:

15
$_SERVER['DOCUMENT_ROOT'] //当前运行脚本所在的文档根目录
显示:D:/Program Files/Apache/www

16
$_SERVER['HTTP_ACCEPT'] //当前请求的 Accept: 头部的内容。
显示:*/*

17
$_SERVER['HTTP_ACCEPT_CHARSET'] //当前请求的 Accept-Charset: 头部的内容。
显示:

18
$_SERVER['HTTP_ACCEPT_ENCODING'] //当前请求的 Accept-Encoding: 头部的内容
显示:gzip,deflate

19
$_SERVER['HTTP_CONNECTION'] //当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
显示:Keep-Alive

20
$_SERVER['HTTP_HOST'] //当前请求的 Host: 头部的内容。
显示:127.0.0.1:8080

21
$_SERVER['HTTP_REFERER'] //链接到当前页面的前一页面的 URL 地址。
显示:http://127.0.0.1:8080/

22
$_SERVER['HTTP_USER_AGENT'] //当前请求的 User_Agent: 头部的内容。
显示:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

23
$_SERVER['HTTPS']//如果通过https访问,则被设为一个非空的值(on),否则返回off
显示:

24
$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。
显示:D:/Program Files/Apache/www/test.php

25
$_SERVER['SERVER_ADMIN'] #管理员信息
显示:w@w.com

26
$_SERVER['SERVER_PORT'] #服务器所使用的端口
显示:8080

27
$_SERVER['SERVER_SIGNATURE'] #包含服务器版本和虚拟主机名的字符串。
显示:Apache/2.0.52 (Win32) PHP/5.2.1 Server at 10.145.40.150 Port 8080

28
$_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。
显示:

29
$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。
显示 :/test.php

30
$_SERVER['PHP_AUTH_USER'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
显示:

31
$_SERVER['PHP_AUTH_PW'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
显示:

32
$_SERVER['AUTH_TYPE'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型

如果你还是比较迷茫的话,建议你编写一个脚本,比如代码如下:

";
print_r($_SERVER);
echo "";
?>

根据输出结果与上面的对照介绍吧!

有用  |  无用

猜你喜欢