- 定义
超全局变量,是在全部作用域中始终可用的内置变量。
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." "; 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"
但是在开发环境下,我们不建议这样配置。
结果如下: