美文网首页
php入门-- 超级全局变量

php入门-- 超级全局变量

作者: snakeSkin | 来源:发表于2017-03-23 23:32 被阅读38次

    超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用。
    PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
    PHP 超级全局变量列表:
    $GLOBALS
    $_SERVER
    $_REQUEST
    $_POST
    $_GET
    $_FILES
    $_ENV
    $_COOKIE
    $_SESSION

    $GLOBALS

    $GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

    <?php 
    $x = 75; 
    $y = 25;
    function addition() 
    { 
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
    }
    addition(); 
    echo $z; 
    ?>
    //输出:
    /*
    100
    */
    

    以上实例中 z 是一个$GLOBALS数组中的超级全局变量,该变量同样可以在函数外访问。

    $_SERVER

    $_SERVER 是一个包含了诸如头信息(header)路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

    <?php 
    echo $_SERVER['PHP_SELF'];
    echo "<br>";
    echo $_SERVER['SERVER_NAME'];
    echo "<br>";
    echo $_SERVER['HTTP_HOST'];
    echo "<br>";
    echo $_SERVER['HTTP_REFERER'];
    echo "<br>";
    echo $_SERVER['HTTP_USER_AGENT'];
    echo "<br>";
    echo $_SERVER['SCRIPT_NAME'];
    ?>
    //输出
    /*
    /try/demo_source/demo_global_server.php
    www.runoob.com
    www.runoob.com
    http://www.runoob.com/try/showphp.php?filename=demo_global_server
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
    /try/demo_source/demo_global_server.php
    */
    

    当然$_SERVER中不止这些信息,还有很多可以查api。

    $_REQUEST

    $_REQUEST 用于收集HTML表单提交的数据。
    以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据:

    <html>
    <body>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    Name: <input type="text" name="fname">
    <input type="submit">
    </form>
    <?php 
    $name = $_REQUEST['fname']; 
    echo $name; 
    ?>
    </body>
    </html>
    
    $_REQUEST使用案例

    $_POST

    $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
    以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_POST 来收集表单中的 input 字段数据:

    <html>
    <body>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    Name: <input type="text" name="fname">
    <input type="submit">
    </form>
    <?php 
    $name = $_POST['fname']; 
    echo $name; 
    ?>
    </body>
    </html>
    
    $_POST使用案例

    $_GET

    $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。
    $_GET 也可以收集URL中发送的数据。

    <html>
    <body>
    <a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>
    </body>
    </html>
    

    从定义上来看$_POST和$_REQUEST的定义一样,那到底有什么区别呢?
    这里有比较简单的解释:
    $_GET变量接受所有以get方式发送的请求,及浏览器地址栏中的?之后的内容
    $_POST变量接受所有以post方式发送的请求,例如,一个form以method=post提交,提交后php会处理post过来的全部变量
    而$_REQUEST支持两种方式发送过来的请求,即post和get它都可以接受,显示不显示要看传递方法,get会显示在url中(有字符数限制),post不会在url中显示,可以传递任意多的数据(只要服务器支持)

    相关文章

      网友评论

          本文标题:php入门-- 超级全局变量

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