PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
预定义全局变量(或称为预定义数组)
PHP中共有九大预定义的全局变量,可以在脚本的任何地方访问他们。分别是:$_SERVER
,
$_GET
, $_POST
, $_COOKIE
,
$_SESSION
, $_FILES
, $_ENV
,
$_REQUEST
,
$_GLOBALS
。这些预定义的全局变量有以下特点:
- 实质就是特殊的数组,操作方式没有任何区别。
- 无需声明,脚本中默认存在,所以应注意避免与这些全局变量重名。
- 无需Global关键词就可以访问。
他们各自有着重要的作用,下面进行一一说明。
$_SERVER
(服务器变量)
$_SERVER
是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script
locations)等等信息的数组。这个数组中的项目由Web服务器创建。服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。如:
1 |
|
$_ENV
(环境变量)
$_ENV
数组内容是在PHP解释器运行时,从PHP所在的服务器中的环境变量转变为PHP变量的。他们中的大部分有PHP运行的系统决定。
1 |
|
$_GET
(URL GET变量)
$_GET
是经由URL请求提交到脚本的变量,它被广泛应用于收集表单数据,需要在HTML
form标签的指定该属性:"method="get"。比如我们现在写两个页面。一个为$_GET.html
,另一个为$_GET.php
。
1 |
|
1 |
|
访问$_GET.html并点击超链接就会发现我们提交的表单数据已经传到了另一个页面了。
在第二个界面中我们也可以看到URL为:xxx/$_GET.php?name=admin&passwd=123456
,通过改变参数也可以改变输出结果。
$_POST
(HTTP POST变量)
$_POST
也用于收集表单数据,使用时需要添加标签属性:method=post
。表单域的名称会自动成为$_POST
数组中的
ID 键。我们使用两个页面:$_POST.html
和
$_POST.php
1 |
|
1 |
|
填入信息后提交,即可返回结果。
$_REQUEST
(request变量)
此关联数组包含了$_GET
,$_POST
和$_COOKIE
中的全部内容。假设我们设置了一个输入域名称为"adress",那么如果用POST方法提交的话,$_REQUEST["address"]
就是我们的提交值;如果用GET方法提交的话,$_REQUEST["address"]
的值就是提交值了。只不过\(_REQUEST的速度较慢,不推荐使用。 ##
`\)_FILES`(HTTP文件上传变量)
使用表单的file输入域上传文件是。必须使用POST来提交。但在服务器文件中,并不能通过$_POST
数组来获取提交表单中的file域中的内容。而$_FILES
是表单通过POST方法传递的已上传项目组成的数组。该数组是一个二维数组,含有五个子数组元素,第一个下标为表单中输入域的名称,第二个用于描述上传文件的属性。后面会仔细学习该变量,这里先介绍。
$_COOKIE
(HTTP Cookies)
通常这些cookies是由以前执行的php脚本通过setCookie()方法设置到客户端浏览器中的。具体后面介绍。
## $_SESSION
(Session变量)
PHP5中,会话控制是在服务器端使用session跟踪用户。当服务器页面中使用session_start()函数开启session后,就可以使用$_session
数组注册全局变量,用户就可以在整个网站中访问这些绘画信息。具体后面介绍。
## $GLOBALS
(Global变量)
$_GLOBALS
变量是由所有已定义的全局变量和数组组成的。变量名就是数组的索引,所有脚本中均有效。我们也可以使用它来代替global
关键字,如:
1 |
|