写点什么

【web 开发基础】PHP 中的预定义数组 (46)

作者:迷彩
  • 2022-11-30
    广东
  • 本文字数:1005 字

    阅读完需:约 3 分钟

前言

从 PHP4.1.0 开始,PHP 提供了一套附加的预定义数组,这些数组变量包含了来自 web 服务器,客户端、运行环境和用户输入的数据。这写数组非常特别,通常被称为自动全局变量后者超全局变量,他们具有以下几个特性:

  1. 其实质就是一种特殊的数组,操作方式和普通数组没有区别。

  2. 不用去声明他们,在每个 PHP 脚本中默认存在,因为 PHP 中用户不用自定义它们,所以在自定义变量时应避免和预定义的全局变量同名。

  3. 它们在全局范围内自动生效,即在函数中直接就可以使用,而且不需要使用 global 关键字访问它们。


预定义的超全局数组变量说明

下面我们逐一简单了解 PHP 中这些预定义的超全局数组的用途

  1. $_SERVER:变量由 Web 服务器设定或者直接与当前脚本的执行环境关联

  2. $_ENV:执行环境提交至脚本的变量

  3. $_GET:经由 URL 请求提交至脚本的变量

  4. $_POST:经由 HTTP POST 方法提交至脚本变量

  5. $_REQUESRT:经由 GET、POST 和 Cookie 机制提交至脚本的变量,因此该数组并不值得信任

  6. $_FILES:经由 HTTP POST 文件上传而提交至脚本的变量

  7. $_COOKIE:经由 HTTP Cookie 方法提交至脚本的变量

  8. $_SESSION:当前注册给脚本会话的变量

  9. $GLOBALS:包含一个引用指向每个当前脚本的全局范围内有效的变量。该数组的键名为全局变量名称


用户可以直接利用上面列举到的超全局数组来访问预定义变量。而且,你也会注意到旧的预定义数组(HTTP_*_VARS)仍旧存在,其中“*”根据不同的变量类别使用不同的内容。比如:$HTTP_GET_VARS 类似于 $_GET,$_HTTP_SERVER_VARS 类似于 $_SERVER 等等。这种长格式的旧数组依然有效,但是反对使用。自 PHP5 起,长格式的 PHP 预定义变量可以通过在 php.ini 文件中设置 register_long_arrays 选项来屏蔽。另外,在 PHP 脚本中,所有这些超全局数组相似,都有简短风格,可以以 PHP 变量的形式访问使用每个超全局数组的元素,其中 PHP 变量名称必须与超全局数组下标名称一致,使用非常方便。比如:$_POST['name']可以直接使用 $name 进行操作。但是需要在 PHP 的配置文件 php.ini 中,将 register_globals 配置选项设置为 on。在默认情况下,该选项默认的设定值和 PHP 的版本相关。在 PHP4.2.0 以后所有版本中,该配置的选项默认值为 off。也就是默认关闭的。以前的版本中默认值设置为 on 是开启的,但是现在基本没有人使用那么久远的老古董吧。O(∩_∩)O 哈哈~。这个风格可能会使你遇到代码有不安全的错误,因此不推荐使用这种简短风格,要确保配置文件中的 register_globals 选项是关闭状态。关于些超全局数组变量的具体用法,我们后续详细逐个介绍。

发布于: 刚刚阅读数: 5
用户头像

迷彩

关注

我的工作是常年写bug|公众号:编程架构之美 2020-06-18 加入

修bug的菜鸟~公众号:“互联网有啥事”已改名为“编程架构之美”

评论

发布
暂无评论
【web 开发基础】PHP中的预定义数组(46)_php_迷彩_InfoQ写作社区