PHP自学之路------超全局变量

什么是超全局变量

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

   
[php] view plain copy
 
 print?
  1. <?php  
  2.      //全局标量,因为该变量作用于在整个文件中,都是可见的  
  3.     $a=23;  
  4.     function test(){  
  5.     //但是在函数中并不能使用到全局$a,如果想使用需要加下面的一句  
  6.        // global $a;// A  
  7.         $a=45;  
  8.     }  
  9.     test();  
  10.     echo $a;  
  11. ?>  

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

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

   那么什么是超全局变量

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

[php] view plain copy
 
 print?
  1. <?php  
  2.     //超全局变量  
  3.     $_SERVER['jsh'] = "阿辉";  
  4.     echo "<pre>";  
  5.       
  6.     print_r($_SERVER);  
  7.       
  8.       
  9.     echo "</pre>"  
  10. ?>  

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

总结如下:

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

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

PHP提供了九种:

1、$_GET

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

Ø  基本用法:

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

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

实现流程如下:

 

 

具体实例:

get.php

[php] view plain copy
 
 print?
  1. <?php  
  2.     echo "<a href='a.php?city=beijing&name=jsh'>传送数据</a>";  
  3. ?>  


a.php

[php] view plain copy
 
 print?
  1. <?php  
  2.     echo "<pre>";  
  3.     print_r($_GET);  
  4.     echo "</pre>";  
  5.       
  6.     //我们可以使用下面方法分别获得他们的数据  
  7.     if(empty($_GET['name'])){  
  8.         echo "没有收到";  
  9.     }else{  
  10.         echo $_GET['name']."<br/>";  
  11.     }  
  12.     if(empty($_GET['city'])){  
  13.         echo "没有收到";  
  14.     }else{  
  15.         echo $_GET['city']."<br/>";  
  16.     }  
  17. ?>  



 测试结果:

[php] view plain copy
 
 print?
  1. Array  
  2. (  
  3.     [city] => beijing  
  4.     [name] => jsh  
  5. )  
  6.   
  7. jsh  
  8. beijing  

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

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

[php] view plain copy
 
 print?
  1. <?php  
  2.     //超全局变量Post使用  
  3.     echo "<pre>";  
  4.     //print_r($_POST);  
  5.       
  6.     $name=$_POST['username'];  
  7.     $pwd=$_POST['passwd'];  
  8.     $sax=$_POST['sex'];  
  9.     $hobby=$_POST['hobby'];  
  10.     echo "$name  $pwd  $sax <br/>";  
  11.     print_r($hobby);  
  12.     $text=$_POST['intro'];  
  13.     echo $text;  
  14. ?>  

 post 和get 区别:

1、 安全性 post >get

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

3、保存到收藏夹  get方便

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

[php] view plain copy
 
 print?
  1. <?php  
  2.   
  3.     //REQUEST使用  
  4.     echo "<pre>";  
  5.     print_r($_REQUEST);  
  6.     echo "</pre>";  
  7.       
  8.     //如何去除某个值,和get post方法一样  
  9.     //$_REQUEST 既可以接受Get 请求数据,也可以接受Post Cookie  
  10.     //所以这个变量,比较不可信,不建议使用  
  11.     echo $_REQUEST['aa'];  
  12.       
  13.     //如果不确定get/post  
  14.     if($_SERVER['http_method'] == "post'){  
  15.         echo $_POST['aa'];  
  16.     }else if ($_SERVER['http_method'] == "get'){  
  17.         echo $_GET['aa'];  
  18.     }  
  19. ?>  

4、$_SERVER 

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

5 $_ENV

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

6  其他

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

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

posted @ 2016-12-29 11:22  天涯海角路  阅读(104)  评论(0)    收藏  举报