前言 从PHP4.1.0开始,PHP提供了一套附加的预定义数组,这些数组变量包含了来自web服务器,客户端、运行环境和用户输入的数据。这写数组非常特别,通常被称为自动全局变量后者超全
前言
从PHP4.1.0开始,PHP提供了一套附加的预定义数组,这些数组变量包含了来自web服务器,客户端、运行环境和用户输入的数据。这写数组非常特别,通常被称为自动全局变量后者超全局变量,他们具有以下几个特性:
- 其实质就是一种特殊的数组,操作方式和普通数组没有区别。
- 不用去声明他们,在每个PHP脚本中默认存在,因为PHP中用户不用自定义它们,所以在自定义变量时应避免和预定义的全局变量同名。
- 它们在全局范围内自动生效,即在函数中直接就可以使用,而且不需要使用global关键字访问它们。
预定义的超全局数组变量说明
下面我们逐一简单了解PHP中这些预定义的超全局数组的用途
- $_SERVER:变量由Web服务器设定或者直接与当前脚本的执行环境关联
- $_ENV:执行环境提交至脚本的变量
- $_GET:经由URL请求提交至脚本的变量
- $_POST:经由HTTP POST方法提交至脚本变量
- $_REQUESRT:经由GET、POST和Cookie机制提交至脚本的变量,因此该数组并不值得信任
- $_FILES:经由HTTP POST文件上传而提交至脚本的变量
- $_COOKIE:经由HTTP Cookie方法提交至脚本的变量
- $_SESSION:当前注册给脚本会话的变量
- $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选项是关闭状态。关于些超全局数组变量的具体用法,我们后续详细逐个介绍。
【感谢龙石为本站提供数据共享交换平台 http://www.longshidata.com/pages/exchange.html】