预定义数组
从PHP 4.1.0开始,PHP提供了一套附加的预定义数组,这些数组变量包含了来自web服务器、客户端、运行环境和用户输入的数据,这些数组非常特别,通常被称为自动全局变量或者“超”全局变量。就是一种特殊的数组,操作方式没有区别;不同去声明他们,在每个PHP脚本中默认存在,因为在PHP中用户不用自定义他们,所以在自定义变量时应避免和预定的全局变量同名;他们在全局范围内自动生效,即在函数中直接就可以使用,且不用使用global关键字访问他们。
预定义数组 | 说明 |
---|---|
$_SERVER | 变量由web服务器设定或者直接与当前脚本的执行环境相关联 |
$_ENV | 执行环境提交至脚本的变量 |
$_GET | 经由URL请求提交至脚本的变量 |
$_POST | 经由http post方法提交至脚本的变量 |
$_REQUEST | 经由get、post和cookie机制提交至脚本的变量,因此该数组并不值得信任 |
$_FILES | 经由http、post文件上传而提交至脚本的变量 |
$_COOKIE | 经由http cookies方法提交至脚本的变量 |
$_SESSION | 当前注册给脚本会话的变量 |
$GLOBALS | 包含一个引用指向每个当前脚本的全局变量范围内有效的变量。该数组的键名为全局变量的名称 |
1、服务器变量:$_SERVER
$_SERVER是一个包含诸如头信息、路径和脚本位置的数组。数组的实体由web服务器创建,并不能保证所有的服务器都能产生所有的信息,服务器可能忽略了一些信息,或者产生了一些其他的新的信息。和其他的超全局数组一样,这是一个自动的全局变量,在所有的脚本中都有效,在函数或对象的方法中不需要使用global关键字访问它。
$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关。
$_SERVER['argv'] #传递给该脚本的参数。
$_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
$_SERVER['GATEWAY_INTERFACE'] #服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
$_SERVER['SERVER_NAME'] #当前运行脚本所在服务器主机的名称。
$_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: 头部的内容。
$_SERVER['HTTP_REFERER'] #链接到当前页面的前一页面的 URL 地址。
$_SERVER['HTTP_USER_AGENT'] #当前请求的 User_Agent: 头部的内容。
$_SERVER['HTTPS'] — 如果通过https访问,则被设为一个非空的值(on),否则返回off
$_SERVER['REMOTE_ADDR'] #正在浏览当前页面用户的 IP 地址。
$_SERVER['REMOTE_HOST'] #正在浏览当前页面用户的主机名。
$_SERVER['REMOTE_PORT'] #用户连接到服务器时所使用的端口。
$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。
$_SERVER['SERVER_ADMIN'] #管理员信息
$_SERVER['SERVER_PORT'] #服务器所使用的端口
$_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 认证功能,这个变量便是认证的类型。
2、环境变量:$_ENV
$_ENV数组中的内容是在PHP解析器运行时,从PHP所在服务器中的环境变量转变为PHP全局变量的。它们中许多都是由PHP所运行的系统决定的,完整的列表是不可能的,需要查看PHP所在服务器的系统文档以确定其特定的环境变量。
3、URL GET 变量:$_GET
$_GET数组也是超全局变量数组,是通过URL GET方法传递的变量组成的数组。它属于外部变量,即在服务器页面中通过$_GET超全局数据获取URL或表单的GET方式传递过来的参数。
4、HTTP POST变量:$_POST
$_POST数组是通过HTTP POST方法传递的变量组成的数组。$_POST和$_GET数组之一都可以保存表单提交的变量,使用哪一个数组取决于提交表单时在表单form标记中的method属性使用的方法是post还是get。但是使用$_POST数组只能访问以post方法提交的表单数据。
5、request变量:$_REQUEST
此关联数组包含$_GET、$_POST和$_COOKIE中全部的内容,但是其速度比较慢,所以不推荐使用。
6、HTTP文件上传变量:$_FILES
使用表单的file输入域上传文件时,必须使用post提交。但在服务器文件中,并不能通过$_POST超全局数组获取到表单中file域的内容。而$_FILES超全局变量是通过post方法传递的已上传文件项目组成的数组。$_FILES是一个二维数组,包含5个子数组元素,其中第一个下标是表单中file输入域的名称,第二个下标用于描述上传文件的属性。
7、HTTP Cookies :$_COOKIE
$_COOKIE超全局数组是经由HTTP Cookies方法提交至脚本的变量。通常这些Cookies是由以前执行的PHP脚本通过setCookies()函数设置到客户端浏览器中的,当PHP脚本从客户浏览器提取了一个cookie后,它将自动把它转换成一个变量,可以通过这个$_COOKIE超全局数组和cookie的名称来存取指定的cookie值。
8、Session变量:$_SESSION
会话控制是在服务器端使用session跟踪用户,当服务器页面中使用session_start()函数开启session后,就可以使用$_SESSION数组注册全局变量,用户就可以在整个网站中访问这些会员信息。
9、Global变量:$GLOBALS
$GLOBALS是由所有已定义的全局变量组成的数组,变量名就是该数组的索引。
来源:https://www.cnblogs.com/mood-butterfly/p/6439196.html