美文网首页
php预定义超全局变量、超全局数组

php预定义超全局变量、超全局数组

作者: zhanglizzy | 来源:发表于2017-03-28 14:29 被阅读50次

    一、超全局变量:
    除了有全局变量的特点外,可以无须声明,直接使用。
    全局变量:

    //全局变量
    $a = 23;
    function test() {
        global $a;//使用到全局$a
        $a = 12;
    }
    test();
    echo $a."<br/>";
    

    超全局变量:

    //超全局变量
    echo "<pre>";
    echo print_r($_SERVER);
    echo "</pre>";
    

    二、php提供了九种超全局数组的,可以更方便快捷的写出程序:
    1、$_GET:
    通过URL参数传递给当前脚本的变量的数组。
    基本用法:
    (1)客户机(浏览器)通过超链接传送信息给服务器;(默认get)
    (2)客户机(浏览器)通过表单传递信息给服务器-->推荐表单数据使用POST提交。

    超链接页面:

    <?php
    
        //对中文url编码
        $str = urlencode("长沙你好");
        echo "<a href='GET.php?city=".$str."&name=lizzy'>传送数据</a>";
    ?>
    

    GET页面正常接收数据:

     <?php
    
        echo "<pre>";
        echo print_r($_GET);
        echo "</pre>";
    
        echo "--".$_GET['city'];
    ?>
    

    _GET也可以接收表单以get方式提交数据。
    使用细节:
    (1)判断是否收到值:

    if (empty($_GET['city'])) {
        echo "没有收到city";
    } else {
        echo "有city:".$_GET['city'];
    }
    

    (2)$_GET使用陷阱,绝对不能启用php.ini文件中的register_globals = off 需要关闭,否则小心sql注入。

    2、$_POST:
    通过http post方式提交的数据,会被封装到$_POST 超全局数组中。有些数据传输必须post,比如传文件。。。(表单建议post安全)
    界面代码:

    <!DOCTYPE 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="password"/><br/>
        性别:<input type="radio" name="sex" value="female" /> 女 <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/>
        你的所在地:
        <select name="city">
            <option value="changsha">长沙</option>
            <option value="beijing">北京</option>
            <option value="shenzhen">深圳</option>
        </select><br/>
        个人介绍:
        <textarea rows="10" name="introduce" cols="30">
        </textarea><br/>
        选择图片:
        <input type="file" name="myphoto"><br/>
    
        <input type="submit" value="提交"/>
    </form>
    </html>
    

    接收数据代码:

    <?php
    
        //接收
        echo "<pre>";
        echo print_r($_POST);
        echo "</pre>";
    
        $name = $_POST['username'];
        $pwd = $_POST['password'];
        $hobbies = $_POST['hobby'];
        echo "个人信息如下:<br/>";
        echo "用户名:".$name.";密码:".$pwd.";";
        // print_r($hobbies);
        echo "<br/>该人的爱好:";
        foreach ($hobbies as $key => $value) {
            echo "<br/>$key=$value";
        }
    
        $city = $_POST['city'];
        echo "<br/>你的所在地是:".$city;
        echo "<br/>个人介绍如下:";
        $intro = $_POST['introduce'];
        echo "<br/>$intro";
        $photo = $_POST['myphoto'];
        echo "<br/>所选照片是:".$photo;
    ?>
    

    get与post数据区分:
    get数据已经主要是:
    (1)<a></a> 超链接默认是get提交;
    (2)header("Location:ok.php?aa=lizzy");这样的方式跳转的时候也是以get方式提交给ok.php。
    post和get区别:
    (1)安全性:post>get
    (2)数据传输大小:[浏览器控制的]post>get
    (3)保存到收藏夹:get比较方便。

    3、$_REQUEST:
    $_REQUEST中可以包含$_GET/$_POST/$_COOKIE这些数组的信息。

    4、$_SERVER:
    $_SERVER主要包含了http请求行和消息头的信息,同时还有服务器自己的一些信息,比如:DOCUMENT_ROOT、SCRIPT__FILENAME...

    5、$_ENV:
    该全局数组可以获取环境变量。 在php5.3中默认禁用,可以在php.ini中启用;variables_order = "EGPCS";

    6、$_FILE;

    7、$_COOKIE:
    可以用来在多个页面共享一些信息,cookie是被HTTP协议支持的,浏览器在向服务器请求一个页面时,服务器返回HTTP报文+数据,浏览器会解析从服务器接收的HTTP报文,从而做相应的操作。

    8、$_SESSION:
    session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

    9、$GLOBALS:
    一个包含了全部变量的全局组合数组,变量的名字就是数组的键,同时一个自定义的全局变量也会自动被$_GLOBALS管理。

    相关文章

      网友评论

          本文标题:php预定义超全局变量、超全局数组

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