美文网首页
超全局数组(预定义变量)

超全局数组(预定义变量)

作者: 刘宇龙 | 来源:发表于2016-09-16 13:51 被阅读0次

    概念

    超全局数组(变量), 在PHP的脚本中, 已经声明完的变量, 你可以直接就去使用即可! 变量的名子已经规定好的了
    $_SERVER
    $_ENV
    $_GET
    $_POST
    $_REQUEST
    $_FILES
    $_COOKIE
    $_SESSION
    $GLOBALS

    1.数组(关联数组), 就和你自己声明的数组是一样的操作方式

    2.全局

    3.每个预定义的数组都有自独特的能力

    <?php
    // echo count($_SERVER);
    //
    // foreach($_SERVER as $key=>$value){
    //   echo "{$key}=>{$value}<br>";
    // }
    
    // $arr=array("龙哥","小弟");
    // function demo(){
    //     global $arr;
    //     echo $arr[0]."和".$arr[1];
    // }
    // demo();
    $_GET=array("龙哥","小弟");
    function demo(){
        echo $_GET[0]."和".$_GET[1];
        $_GET['username']="admin";
    }
    demo();
    print_r($_GET);
    

    服务器变量$_SERVER和环境变量$_ENV

    function getip() {
    
            if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
                return $_SERVER['HTTP_CLIENT_IP'];
            } elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                return $_SERVER['HTTP_X_FORWARDED_FOR'];
            } else if(!empty($_SERVER['REMOTE_ADDR'])) {
    
                return $_SERVER['REMOTE_ADDR'];
            }else{
                return '未知IP';
            }
        }
    
        echo getip();
    
        echo '<br>';
    
        echo $_SERVER['HTTP_USER_AGENT'];
    
        echo '<br>';
    
        echo count($_SERVER);
        echo "<br>";
        echo '<pre>';
        print_r($_SERVER);
        echo '</pre>';
    

    $_GET、$_POST、$_REQUEST

    1.$_GET 接收用户通过URL向服务器传的参数 get传输有地址栏大小限制,且不安全,可以在地址栏看到所传参数

    2.$_POST接收用户通过http协议向服务器传的参数 http post传输,大下限制由php配置限制,可以修改,但是不能超过服务器内存大小,地址栏看不到所传参数相对安全,

    3.$_REQUEST

    $_GET

    //可以以数组传值
    <a href="demo.php?action[]=add&action[]=mod&id=5&name=admin">测试页面</a>
    print_r($_GET);
    //或者可以输出单值
    echo $_GET['id'];
    

    $_POST

    //可以以数组传值
    <form action="demo.php?age=www&dd=yy" method="post">
        username: <input type="text" name="name[one]" /><br>
        username: <input type="text" name="name[two]" /><br>
        username: <input type="text" name="name[three]" /><br>
        age: <input type="text" name="age" /> <br>
        sex: <input type="text" name="sex" /> <br>
    
        <input type="submit"  name ="sub" value="提交">
    </form>
    

    $_REQUEST

    $_REQUEST可以全部接受所传参数,功能比$_GET、$_POST强大,但是如果出现两个同名的,后一个会将前一个覆盖。而且漏洞相对较大,黑客容易攻击。

    //是用empty判断是否存在
    $arr = !empty($_POST) ? $_POST : $_GET;
    
    //不要使用全局变量$_GET,$_POST做函数形参。
    //function demo($_GET,$_POST){
    
    //}
    

    $_FILES

    通过HTTP POST 方法传递的已上传文件项目组成的数组。是自动全局变量。

    $_COOKIE、$_SESSION

    setCookie("name","龙哥",time()+3600,"/");
    print_r($_COOKIE);
    
    session_start();
    $_SESSION['name']="hello";
    print_r($_SESSION);
    
    echo '<pre>';
    print_r($GLOBALS);
    echo '</pre>';

    相关文章

      网友评论

          本文标题:超全局数组(预定义变量)

          本文链接:https://www.haomeiwen.com/subject/yhovettx.html