Php 简明教程

PHP - Superglobals

PHP 解析器会用很多预定义变量及其全局命名空间填充当前脚本。预定义变量称为 “ PHP superglobals ”。

  1. 任何在任何函数、方法或类外部声明的用户自定义变量也是一个全局变量。然而,要访问它,你需要使用 global 关键字。

  2. 相比之下, superglobals 始终在 PHP 脚本的任何地方都可用,而无需以 global 关键字对其进行声明。

PHP 中的大多数超级全局变量都是关联数组,并且 Web 服务器会填充它们。因此,如果在命令行环境中运行脚本,则某些超级全局变量可能为空。

PHP 中的超级全局变量列表包括以下内容:

  1. $GLOBALS

  2. $_SERVER

  3. $_GET

  4. $_POST

  5. $_FILES

  6. $_COOKIE

  7. $_SESSION

  8. $_REQUEST

  9. $_ENV

在本章中,我们将对 PHP 中的这些超级全局变量进行简要介绍。在后续章节中,我们将详细讨论这些超级全局变量。

$GLOBALS

它是对所有全局定义变量的引用的关联数组。变量名称构成键,其内容是关联数组的值。

$_SERVER

所有与服务器和执行环境相关的信息都包含在该关联数组中。

5.4.0 之前的 PHP 版本包含以 $HTTP_SERVER_VARS 形式存在相同信息的变量,但现在已删除。

$_GET

它是通过附加至 HTTP 请求的 URL 的查询字符串传给当前脚本的变量的关联数组。请注意,除了 GET 请求之外,还通过包含查询字符串的所有请求填充该数组。

查询字符串是所有变量及其值按“var=val”形式形成的列表,并以“&”符号连接起来。

查询字符串本身在问号“?”之后附加至 PHP 脚本名称。例如 http://localhost/hello.php?first_name=Amar&last_name=Sharma

$_POST

它是由 HTTP POST 方法通过查询字符串传给 URL 的键-值对的关联数组,在请求中使用 URLEncodedmultipart/form-data 内容类型。

$HTTP_POST_VARS 还包含与 $_POST 相同的信息,但不是超级全局变量,现已不赞成使用。向服务器发送具有 POST 请求的数据的最简单方法是将 HTML 表单的方法属性指定为 POST。

$_FILES

变量 $_FILES 是一个关联数组,其中包含通过 HTTP POST 方法上传的项。当一个 HTML 表单包含一个文件类型的输入元素,它的 enctype 属性设置为 multipart/form-data,并且方法属性设置为 HTTP POST 方法时,就会上传一个文件。

Cookie 是服务器存储在客户端计算机上的文本文件,并且它们被保留以用于跟踪目的。

超级全局变量 $_COOKIE 将通过 HTTP 请求传递给当前 PHP 脚本的变量以 cookie 的形式存储起来。

$_SESSION

HTTP 会话是用户与服务器建立连接的时间持续期,以及连接被终止的时间之间的时间段。在此间隔期间,某些数据是以会话变量的形式永久存在于页面中。

$_SESSION 超全局变量是会话变量的关联数组,当前脚本可以使用。

$_REQUEST

$_REQUEST 是一个关联数组,它包含 $_GET、$_POST 和 $_COOKIE 变量的内容。

这些变量的顺序由 "php.ini" 文件中 requests_ordervarables_order 设置的值决定。

$_ENV

$_ENV 是一个关联数组,它存储当前脚本可用的所有环境变量。如果 PHP 以服务器模块或 CGI 处理器的形式运行,此数组中还将包含 CGI 变量。