牛骨文教育服务平台(让学习变的简单)

超全局变量

什么是超全局变量

下面先了解什么是全局变量,看下面的例子“

 

<?php
     //全局标量,因为该变量作用于在整个文件中,都是可见的
    $a=23;
	function test(){
	//但是在函数中并不能使用到全局$a,如果想使用需要加下面的一句
	   // global $a;// A
	    $a=45;
	}
	test();
	echo $a;
?>

当A标识段落被注释时,输出 23;

当没有被注释时,输出45;

那么什么是超全局变量

超全局变量除了有全局变量的特性外,还有可以无需声明直接使用,看下面的例子

<?php
    //超全局变量
	$_SERVER["jsh"] = "阿辉";
	echo "<pre>";
	
	print_r($_SERVER);
	
	
	echo "</pre>"
?>

输出是会输出 [jsh]="阿辉”,也会被打印出来,但是仅限于这个文件中。如何换个文件将不会被打印

总结如下:

1、 PHP中许多预定义变量都是超全局的,这意味着他们在一个脚本的全部作用域都都可以用,在函数或方法中无需执行 global $variable;来访问他们 。

2、 PHP设计者提供这些超全局数组的目的是为了让PHP程序员可以更方便的编写程序

PHP提供了九种:

1、$_GET

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

Ø  基本用法:

1、  客户机(浏览器)通过超链接传送信息给服务器(默认使用get方式)

2、客户机(浏览器)通过扁担传送信息给服务器(但是我们推荐表单用Post提交 )

实现流程如下:

具体实例:

get.php

<?php
    echo "<a href="a.php?city=beijing&name=jsh">传送数据</a>";
?>

a.php

<?php
    echo "<pre>";
	print_r($_GET);
	echo "</pre>";
	
	//我们可以使用下面方法分别获得他们的数据
	if(empty($_GET["name"])){
	    echo "没有收到";
	}else{
	    echo $_GET["name"]."<br/>";
	}
	if(empty($_GET["city"])){
	    echo "没有收到";
	}else{
	    echo $_GET["city"]."<br/>";
	}
?>

测试结果:

Array
(
    [city] => beijing
    [name] => jsh
)

jsh
beijing

2、$_POST
通过http:post方式提交的数据,会被封装到$_POST超全局数据中
Ø  基本用法:
1客户机(浏览器)通过表单传送消息给服务器并且需要书用POST方式,有些数据的提交必须使用Post,比如上传文件。。看下面的示例:

post.html

<html>
<head>
<!--<meta http-equiv="content-type" content="text/html;charset=utf-8"/>-->
</head>
<h1>用户注册</h1>
<form action="./post.php" method="post">
用户名:<input type="text" name="username"/><br/>
密码:<input type="text" name="passwd"/><br/>
性别:<input type="radio" name="sex" value="women"/>女 
      <input type="radio" name="sex" value="man"/>男<br/>
你喜欢什么:<input type="checkbox" name="hobby[]" value="唱歌">唱歌
            <input type="checkbox" name="hobby[]"  value="游泳">游泳
            <input type="checkbox" name="hobby[]"  value="骑马">骑马
            <input type="checkbox" name="hobby[]"  value="跳舞">跳舞<br/>
个人介绍:<textarea rows="5" name="intro" cols="20"></textarea><br/>
上传图片:<input type="file" name="1.swd"/>		<br/>	
	  
    <input type="submit" value="提交"/>
</form>
</html>

post.php

<?php
    //超全局变量Post使用
	echo "<pre>";
    //print_r($_POST);
	
	$name=$_POST["username"];
	$pwd=$_POST["passwd"];
	$sax=$_POST["sex"];
	$hobby=$_POST["hobby"];
    echo "$name  $pwd  $sax <br/>";
	print_r($hobby);
    $text=$_POST["intro"];
	echo $text;
?>

 post 和get 区别:

1、 安全性 post >get

2、数据长度要求[浏览器控制] post >get

3、保存到收藏夹  get方便

3、$_REQUST

定义$_REQUSR 中可以包含 GETPOST COOKIE数组的信息
也就是说既可以接收getpost 请求和Cookie。

<?php

    //REQUEST使用
	echo "<pre>";
	print_r($_REQUEST);
	echo "</pre>";
	
	//如何去除某个值,和get post方法一样
	//$_REQUEST 既可以接受Get 请求数据,也可以接受Post Cookie
	//所以这个变量,比较不可信,不建议使用
	echo $_REQUEST["aa"];
	
	//如果不确定get/post
	if($_SERVER["http_method"] == "post"){
	    echo $_POST["aa"];
	}else if ($_SERVER["http_method"] == "get"){
	    echo $_GET["aa"];
	}
?>

4、$_SERVER 

前面的章节已经讲过,这里就不再多说了!具体看 http://blog.csdn.net/jsh13417/article/details/8975828

5 $_ENV

默认已经禁用了,这里也不再讲解了。

6  其他


$_FILE 与文件上传有关。  
 $_COOKIE 与Cookie相关

$SESSION 与Session 相关,这几个超全局数据功能强大,同时也比较复杂,暂时也不介绍!