• 定义

超全局变量,是在全部作用域中始终可用的内置变量。

PHP中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。

在函数或方法中无需执行 global $variable 来访问它们。

使编写程序更方便快捷。

  • 内容

$_GET

$_POST

$_REQUEST

$_SERVER

$_COOKIE

$_SESSION

$_GLOBALS

$_ENV

$_FILES

  • $_GET

通过URL参数传递给当前脚本的变量的数组。

基本用法:1、客户机(浏览器)通过超链接<a></a>传送信息给服务器;

       2、客户机(浏览器)通过表单form传送信息给服务器(但推荐表单提交用post方法);

       3、客户机(浏览器)通过header提交。

案例1:超链接中用GET方法传送数据

get.php:

  1. <?php
  2. //超链接提交方式为get
  3. echo "<a href='get1.php?city=beijing&name=liLei'>超链接get方法传送数据</a>";
  4. ?>

get1.php:

  1. <?php
  2. echo "<pre>";
  3. print_r($_GET);
  4. echo "</pre>";
  5. echo "<br/>".$_GET['city']; //通过下标名来取某个值
  6. ?>

结果如下:

案例2:IE6(及其更低级版本)的奇数中文乱码问题

get.php:

  1. <?php
  2. //超链接提交方式为get
  3. //编码
  4. $str=urlencode("张家口");
  5. echo "<a href='get1.php?city=".$str."&name=liLei'>超链接get方法传送数据</a>";
  6. ?>

get1.php

  1. <?php
  2. echo "<pre>";
  3. print_r($_GET);
  4. echo "</pre>";
  5. //判断是否收到值,用empty函数
  6. if(empty($_GET['city'])){
  7. echo "没有收到值";
  8. }else{
  9. //解码
  10. echo "<br/>".urldecode($_GET['city']);
  11. }
  12. ?>

结果如下:

案例3:表单中用get方式提交的信息

<form action="xx.php" method="get">

......

</form>

案例4:header默认用get方法提交

<?php

  header("Location: a.php?name=xiaoMing");

?>

  •  $_POST

$_POST:通过HTTP POST方法传递给当前脚本的变量的数组。

基本用法:客户机(浏览器)通过表单用post方式传送信息给服务器,

      各种表单输入项数据的获取:text、password、radio、checkbox、file、select、textarea、hidden、image、button。

注意:表单中有些数据的提交必须使用post,比如上传文件。

案例:表单用post方式提交

post.html:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>post方法提交表单信息</title>
  6. </head>
  7. <body>
  8. <form action="post1.php" method="post">
  9. <!--文本型-->
  10. 用户名:<input type="text" name="userName"/><br/><br/>
  11. <!--密码型-->
  12. 密码:<input type="password" name="pwd"/><br/><br/>
  13. <!--单选框-->
  14. 性别:<input type="radio" name="sex" id="female" value="female"/><label for="female"></label>
  15. <input type="radio" name="sex" id="male" value="male"/><label for="male"></label><br/><br/>
  16. <!--复选框-->
  17. 爱好:<input type="checkbox" name="hobby[]" value="唱歌" id="sing"/><label for="sing">唱歌</label>
  18. <input type="checkbox" name="hobby[]" value="读书" id="read"/><label for="read">读书</label>
  19. <input type="checkbox" name="hobby[]" value="健身" id="sport"/><label for="sport">健身</label><br/><br/>
  20. <!--下拉框-->
  21. 所在地:<select name="site">
  22. <option value="河北">河北</option>
  23. <option value="北京">北京</option>
  24. <option value="天津">天津</option>
  25. </select><br/><br/>
  26. <!--文件-->
  27. 照片:<input type="file" name="photo"/><br/><br/>
  28. <!--文本域-->
  29. 自我介绍:<textarea name="selfIntro" rows="10" clos="30"></textarea><br/><br/>
  30. <!--提交与重置-->
  31. <input type="submit" value="注册"/>
  32. <input type="reset" value="重置"/>
  33. </form>
  34. </body>
  35. </html>

post1.php:

  1. <?php
  2. echo "<pre>";
  3. print_r($_POST);
  4. echo "</pre>";
  5. //按键名取$_POST中的内容
  6. $name=$_POST['userName'];
  7. echo "名字:".$name."<br/>";
  8. $hobbies=$_POST['hobby'];
  9. echo "爱好:";
  10. foreach($hobbies as $key => $value){
  11. echo $value."&nbsp;";
  12. }
  13. ?>

结果如下:

注意:1、要想获取复选框选中的全部的值,需要把name写成数组形式,如下:

     <input type="checkbox" name="hobby[]" value="唱歌" id="sing"/>

     2、这里文件file信息只能取得文件名。

  •  $_REQUEST

默认情况下包含了$_GET,$_POST和$_COOKIE的数组。

注意:由于$_REQUEST中的变量通过GET、POST和COOKIE输入机制传递给脚本文件,因此可以被远程用户篡改而并不可信。

所以尽量不要使用$_REQUEST,如果不确定是GET提交还是POST提交,可以用如下写法:

if($_SERVER['REQUEST_METHOD']=="GET"){

  $_GET['XX'];

}

if($_SERVER['REQUEST_METHOD']=="POST"){

  $_POST['XX'];

}

  •  $_SERVER

$_SERVER:其中主要包含了HTTP请求行和消息头的信息,还有服务器相关的一些信息。

取出$_SERVER中内容的程序:

  1. <?php
  2. echo "<pre>";
  3. print_r($_SERVER);
  4. echo "</pre>";
  5. ?>

结果如下:

其中:1、请求该页面的客户机IP地址——REMOTE_ADDR

     2、服务器端apache和php版本号——SERVER_SOFTWARE

     3、决定get/post方法接收数据——REQUEST_METHOD

  • $_ENV

$_ENV:用于获取服务器端环境信息。

注意:默认情况下不能使用$_ENV,你会得到空值,这是出于对安全的考虑。

    如果希望使用,则需要修改配置文件php.ini中

    variables_order="EGPCS"

   但是在开发环境下,我们不建议这样配置。

结果如下:

PHP中的预定义超全局数组的更多相关文章

  1. PHP中预定义超全局数组(变量)

    PHP中许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用.超全局变量除了具有全局变量特点外,在函数或方法中无需执行global $variable:就可以访问它们. 提供超全 ...

  2. PHP 预定义超全局数组/变量

    1.超全局变量:不用定义声明即可用.PHP有九种 2.$_GET:通过参数传递给当前脚本的变量的数组 浏览器页面-->(http协议)->apache-->php module--& ...

  3. PHP基础-PHP中预定义的超全局数组

    预定义数组: 自动全局变量---超全局数组 1. 包含了来自WEB服务器,客户端,运行环境和用户输入的数据 2. 这些数组比较特别 3. 全局范围内自动生效,都可以直接使用这些数组 4. 用户不能自定 ...

  4. php学习笔记 [预定义数组(超全局数组)]

    <?php  预定义数组: * 自动全局变量---超全局数组 * * 1.包含了来自WEB服务器,客户端,运行环境和用户输入的数据 * 2.这些数组比较特别 * 3.全局范围内自动生效,都可以直 ...

  5. 【二十三】php之预定义超全局变量

    php提供了九种预定义超全局变量: $_GET.$_POST.$_REQUEST.$_SERVER.$_ENV.$_FILE. $_COOKIE.$_SESSION. $GLOBALS 1.$_GET ...

  6. 2016/3/20 数组定义 数组遍历 超全局数组 数组元素设置(in_array() 、array_reverse()、count()、array_unique()、unset()、array_values、array_merge、array_push) 列表实例

    一.数组定义 php数组与其他语言的数组的不同: 其他例如java语言 :同一种类型数据的集合. php:数组可以存储任何类型的数据.同一个数组中可以放int类型也可以放string类型 ①索引数组的 ...

  7. PHP学习1.5-预定义超全局数组变量

    1.PHP 预定义的超全局变量数组 特性: a.特殊的数组,操作方式没有区别 b.不用声明,php脚本中默认存在,因为在php中不用定义,所以在自定义变量是应避免和预定的全局变量同名 c.在全局范围内 ...

  8. $_GLOBALS超全局数组和global定义的全局变量区别?

    全局变量:主程序中定义的变量(函数外部),只能在主程序中使用,在函数内部不能调用 背景:解决在函数内部调用全局变量的问题 解决方法: 1.在函数内部声名全局变量 <?php public $va ...

  9. PHP开发——超全局数组变量

    概述 l  JS中的变量分两类:局部变量.全局变量. l  PHP中的变量分三类:局部变量.全局变量.超全局变量. l  局部变量:在函数内部声明的变量,就是局部变量.函数执行完毕,局部变量就消失了. ...

随机推荐

  1. hdu 1039 Easier Done Than Said? 字符串

    Easier Done Than Said?                                                                     Time Limi ...

  2. C++ 实现按随意键继续~~~

    近期让学生敲代码交作业的时候要求他们仅仅给我交个cpp文件和一个exe文件,这样交上来的东西不至于太多,不占我的地方,可是有一个问题是exe它总是执行完后就直接关闭界面了,看不到执行结果的界面. 然后 ...

  3. Kinect for Windows V2和V1对照开发___深度数据获取并用OpenCV2.4.10显示

    V1深度分辨率:320x240 V2深度分辨率:512x424 1.  打开深度图像帧的方式 对于V1: hr = m_PNuiSensor->NuiImageStreamOpen( NUI_I ...

  4. mysqld --debug-sync

    http://hedengcheng.com/?p=238https://dev.mysql.com/doc/internals/en/debug-sync-facility.html mysqld ...

  5. ydoc 参考系列

    多个iframe支持 [http://ionicframework.com/docs/components/#icon-buttons]

  6. oracle修改字段类型

    有一个表名为tb,字段段名为name,数据类型nchar(20). 1.假设字段数据为空,则不管改为什么字段类型,可以直接执行:alter table tb modify (name nvarchar ...

  7. 集合练习——Map部分

    练习: 输入诗的名称查询出诗的内容,当输入exit时,退出程序,“春晓”,“静夜思”,“鹅”. package CollectionPart; public class Poetry { privat ...

  8. 简明网络I/O模型---同步异步阻塞非阻塞之惑

    转自:http://www.jianshu.com/p/55eb83d60ab1 网络I/O模型 人多了,就会有问题.web刚出现的时候,光顾的人很少.近年来网络应用规模逐渐扩大,应用的架构也需要随之 ...

  9. linux学习记录(第六章、Linux 的文件权限与目录配置)

    书看的是鸟哥的私房菜,系统用的是centos.被微软坑了N年才发现linux才是王道. 在这里记录些学习的记录.备忘

  10. JQ实现复选框的全选反选不选

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...