PHP 超全局变量



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

  • 任何在任何函数、方法或类之外声明的用户定义变量也是全局变量。但是,要访问它,需要使用global关键字。

  • 相反,超全局变量始终可以在 PHP 脚本中的任何位置使用,无需使用global关键字。

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

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

  • $GLOBALS

  • $_SERVER

  • $_GET

  • $_POST

  • $_FILES

  • $_COOKIE

  • $_SESSION

  • $_REQUEST

  • $_ENV

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

$GLOBALS

这是一个关联数组,包含对所有全局定义变量的引用。变量名构成键,其内容是关联数组的值。

$_SERVER

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

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

$_GET

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

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

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

$_POST

这是一个关联数组,包含通过使用URLEncodedmultipart/form-data内容类型的 HTTP POST 方法传递给 URL 的键值对。

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

$_FILES

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

$_COOKIE

Cookie 是服务器存储在客户端计算机上的文本文件,用于跟踪用途。

超全局变量 $_COOKIE 存储与 HTTP 请求一起传递给当前 PHP 脚本的变量,形式为 Cookie。

$_SESSION

HTTP 会话是指用户与服务器建立连接的时间和连接终止之间的时间段。在此期间,某些数据以会话变量的形式跨页面持续可用。

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

$_REQUEST

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

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

$_ENV

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

广告