对于全部脚本而言,php提供了大量的预定义变量。这些变量将所有的外部变量表示成内建环境变量,并且将错误信息表示成返回头。
PHP中的预定义变量包含:
- 超全局变量 —— 超全局变量是在全部作用域中始终可用的内置变量
- $GLOBALS —— 引用全局作用域中可用的全部变量
- $_SERVER —— 服务器和执行环境信息
- $_GET —— HTTP GET 变量
- $_POST —— HTTP POST 变量
- $_FILES —— HTTP 文件上传变量
- $_REQUEST —— HTTP Request 变量
- $_SESSION —— Session 变量
- $_ENV —— 环境变量
- $_COOKIE —— HTTP Cookies
- $php_errormsg —— 前一个错误信息
- $_HTTP_RAW_POST_DATA —— 原生POST数据
- $http_response_header —— HTTP响应头
- $argc —— 传递给脚本的参数数目
- $argv —— 传递给脚本的参数数组
超级全局变量包含:$GLOBALS, $_SERVER,$_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $ENV。默认情况下,所有的超全局变量都是可用的,但是有一些指令或配置能影响这种可用性。
一、$GLOBALS
$GLOBALS是一个包含全部变量的全局组合数组,变量名字就是数组的键。超级全局变量也成为自动化的全局变量,这表示其在脚本的所有作用域都是可用的。不需要在函数或方法中用global $var;来访问它。与所有其它超级全局变量不同,$GLOBALS在php中总是可用的。
二、$_SERVER
服务器和执行环境信息,$_SERVER是一个包含诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组的项目有Web服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,更为详细的请参考 CGI1.1规范中说明,注意$HTTP_SERVER_VARS包含着相同的信息,但它不是一个超全局变量,这个变量已弃用,$HTTP_SERVER_VARS和$_SERVER是不同的变量,PHP处理他们的方式不同。
三、$_GET
通过 URL 参数传递给当前脚本的变量的数组。 $HTTP_GET_VARS 包含相同的信息, 但它不是一个超全局变量,这个变量已弃用。 注意$HTTP_GET_VARS 和$_GET 是不同的变量,PHP 处理它们的方式不同)
四、$_POST
通过 HTTP POST 方法传递给当前脚本的变量的数组。 $HTTP_POST_VARS 包含相同的信息,但它不是一个超全局变量,这个变量已弃用。 注意$HTTP_POST_VARS 和$_POST 是不同的变量,PHP 处理它们的方式不同。
五、$_FILES
通过 HTTP POST 方式上传到当前脚本的项目的数组。 $HTTP_POST_FILES 包含相同的信息,但它不是一个超全局变量,这个变量已弃用。注意$HTTP_POST_FILES 和$_FILES 是不同的变量,PHP 处理它们的方式不同
六、$_REQUEST
默认情况下包含了$_GET,$_POST 和 $_COOKIE 的数组。注意PHP5.3.0中引入request_order,该指令会影响$_REQUEST的内容。
七、$_SESSION
当前脚本可用 SESSION 变量的数组。更多关于如何使用的信息,参见 Session 函数文档。 $HTTP_SESSION_VARS 包含相同的信息,但它不是一个超全局变量,这个变量已弃用。注意$HTTP_SESSION_VARS 和$_SESSION 是不同的变量,PHP 处理它们的方式不同
八、$_ENV
通过环境方式传递给当前脚本的变量的数组。 这些变量被从 PHP 解析器的运行环境导入到 PHP 的全局命名空间。很多是由支持 PHP 运行的 Shell 提供的,并且不同的系统很可能运行着不同种类的 Shell,所以不可能有一份确定的列表。请查看你的 Shell 文档来获取定义的环境变量列表。 其他环境变量包含了 CGI 变量,而不管 PHP 是以服务器模块还是 CGI 处理器的方式运行。$HTTP_ENV_VARS 包含相同的信息,但它不是一个超全局变量,这个变量已弃用。 (注意 $HTTP_ENV_VARS 和 $_ENV 是不同的变量,PHP 处理它们的方式不同)
九、$_COOKIE
通过 HTTP Cookies 方式传递给当前脚本的变量的数组。 $HTTP_COOKIE_VARS 包含相同的信息,但它不是一个超全局变量,这个变量已弃用。 注意$HTTP_COOKIE_VARS 和$_COOKIE 是不同的变量,PHP 处理它们的方式不同
十、$php_errormsg(前一个错误信息)
$php_errormsg 变量包含由 PHP 生成的最新错误信息。这个变量只在错误发生的作用域内可用,并且要求track_errors 配置项是开启的(默认是关闭的)。如果用户定义了错误处理句柄(set_error_handler())并且返回FALSE 的时候,$php_errormsg 就会被设置。
十一、$HTTP_RAW_POST_DATA(原生POST数据)
$HTTP_RAW_POST_DATA 包含 POST 提交的原始数据。总是产生$HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。否则,此变量仅在碰到未识别 MIME 类型的数据时产生。不过,访问原始 POST 数据的更好方法是 php://input。$HTTP_RAW_POST_DATA 对于enctype="multipart/form-data" 表单数据不可用。
十二、$http_response_header(HTTP响应头)
$http_response_header 数组与 get_headers() 函数类似。当使用HTTP 包装器时,$http_response_header 将会被 HTTP 响应头信息填充。$http_response_header 将被创建于局部作用域中。
十三、$argc
$argc — 传递给脚本的参数数目,包含当运行于命令行下时传递给当前脚本的参数的数目。脚本的文件名总是作为参数传递给当前脚本,因此 $argc 的最小值为1。这个变量仅在 register_argc_argv 打开时可用。
十四、$argv(传递给脚本的参数数组)
包含当运行于命令行下时传递给当前脚本的参数的数组。第一个参数总是当前脚本的文件名,因此 $argv[0] 就是脚本文件名。这个变量仅在 register_argc_argv 打开时可用。