PHP - 超全局变量



PHP 解析器在其全局命名空间中使用许多预定义变量填充当前脚本。预定义的变量称为 “PHP 超全局变量(Superglobals)”。

  • 在任何函数、方法或类之外声明的任何用户定义的变量也是全局变量。但是,要访问它,您需要使用 global 关键字。
  • 相反,超全局变量在 PHP 脚本中的任何位置都可用,而无需使用 global 关键字提及它们。

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

PHP 超全局变量列表包括以下内容 -

  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_FILES
  • $_COOKIE
  • $_SESSION
  • $_REQUEST
  • $_ENV

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

$GLOBALS

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

_SERVER

所有与服务器和执行环境相关的信息都在此关联数组中可用。

包含 $HTTP_SERVER_VARS 的 5.4.0 之前的 PHP 版本包含相同的信息,但现在已被删除。

$_GET

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

查询字符串是所有变量及其值的列表,格式为 var=val 并由 “&” 符号连接。

查询字符串本身会附加到 PHP 脚本名称中 “” 符号后面。例如,http://localhost/hello.php?first_name=Amar&last_name=Sharma

$_POST

它是通过 HTTP POST 方法传递给 URL 的键值对的关联数组,该方法在请求中使用 URLEncoded 或 multipart/form-data content-type

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

$_FILES

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

$_COOKIE

Cookie 是由服务器存储在客户端计算机上的文本文件,它们仅用于使用跟踪目的。

超全局 $_COOKIE 以 cookie 的形式存储传递给当前 PHP 脚本的变量以及 HTTP 请求。

$_SESSION

HTTP 会话是用户与服务器建立连接与连接终止之间的持续时间。在此间隔内,某些数据以会话变量的形式在各个页面中持久可用。

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

$_REQUEST

$_REQUEST 是一个关联数组,它是 $_GET$_POST $_COOKIE 变量内容的集合。

这些变量的顺序由 “php.ini” 文件中的 requests_order 和 varables_order 设置的值决定。

$_ENV

$_ENV 是一个关联数组,用于存储当前脚本可用的所有环境变量。这个数组还包括 CGI 变量,以防 PHP 作为服务器模块或 CGI 处理器运行。