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

举报
迷彩 发表于 2023/07/15 23:30:52 2023/07/15
【摘要】 前言从PHP4.1.0开始,PHP提供了一套附加的预定义数组,这些数组变量包含了来自web服务器,客户端、运行环境和用户输入的数据。这写数组非常特别,通常被称为自动全局变量后者超全局变量,他们具有以下几个特性:其实质就是一种特殊的数组,操作方式和普通数组没有区别。不用去声明他们,在每个PHP脚本中默认存在,因为PHP中用户不用自定义它们,所以在自定义变量时应避免和预定义的全局变量同名。它们在...

前言

从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选项是关闭状态。关于些超全局数组变量的具体用法,我们后续详细逐个介绍。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。