欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Android程序员学PHP开发(22)-超全局数组/超全局变量-PhpStorm

程序员文章站 2022-05-31 11:06:37
...
PHP超级全局变量数组(Super Global Array),又称为PHP预定义数组,是由PHP引擎内置的,不需要开发者重新定义。 在PHP脚本运行时,PHP会自动将一些数据放在超级全局数组中。

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

php超级全局变量列表:

$_GET[] 获得以GET方法提交的变量数组

$_POST[] 获得以POST方法提交的变量数组

$_COOKIE[] 获取和设置当前网站的Cookie标识

$_SESSION[] 取得当前用户访问的唯一标识,以数组形式体现,如sessionid以及自定义session数据

$_ENV[] 当前php环境变量数组

$_SERVER[] 当前php服务器变量数组

$_FILES[] 上传文件时提交到当前脚本的参数值,以数组形式体现

$_REQUEST[] 包含当前脚本提交的全部请求,$_GET、$_POST、$_COOKIE的所有动作

$GLOBALS[] 包含正在执行脚本所有超级全局变量的引用内容

index.php:

<?php
    /**
     * 超全局数组/超全局变量
     * PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。
     * 在函数或方法中无需执行 global $variable; 就可以访问它们。
     * 这些超全局变量是:
        $_GLOBALS       Global变量
        $_SERVER        服务器变量
        $_REQUEST       request变量
        $_POST      HTTP POST变量
        $_GET       HTTP GET变量
        $_FILES     HTTP文件上传变量
        $_ENV       环境变量
        $_COOKIE        HTTP Cookies
        $_SESSION       Session变量
     */

    echo getip();
    echo "<br>";

    echo getip2();
    echo "<br>";

    /**
     * 遍历$_SERVER数组
     */
    foreach ($_SERVER as $key => $value){
        echo "{$key}  =>  {$value} <br>";
    }

    /**
     * 服务器IP的函数--笔试0分的写法
     */
    function getip(){
        return $_SERVER['REMOTE_ADDR'];
    }

    /**
     * 服务器IP的函数--正确写法
     */
    function getip2(){
        if (!empty($_SERVER['HTTP_CLIENT_IP'])){
            return $_SERVER['HTTP_CLIENT_IP'];
        }elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
            return $_SERVER['HTTP_X_FORWARDED_FOR'];
        }elseif (!empty($_SERVER['REMOTE_ADDR'])){
            return $_SERVER['REMOTE_ADDR'];
        }else{
            return '未知IP';
        }
    }
    ?>

    /**
     * GET
     */
    <br>
    <a href="demo.php?action=add&id=5&name=admin">测试页面</a><br>

    /**
    * POST
    * nickname[]下标会自增,跟数组没有区别
    */
    <br>
    <form action="demo.php?nick=www&psw=yyy" method="post">
        nickname:<input type="text" name="nickname[]"/><br>
        nickname:<input type="text" name="nickname[]"/><br>
        nickname:<input type="text" name="nickname[]"/><br>
        nickname:<input type="text" name="nickname[9]"/><br>
        nickname:<input type="text" name="nickname[]"/><br>
        nickname:<input type="text" name="nickname[x]"/><br>
        nickname:<input type="text" name="nickname[]"/><br>
        username:<input type="text" name="name"/><br>
        age:<input type="text" name="age"/><br>
        sex:<input type="text" name="sex"/><br>

        <input type="submit" name="sub" value="提交">
    </form><br>

<?php
    /**
     * $_SESSION
     *
     * Session 函数:
     * http://www.php.cn/
     *
     * Session 开始、存储、终结:
     * http://www.php.cn/
     */
    echo '---------- $_SESSION ----------<br>';
    session_start(); // 启动新会话或者重用现有会话
    $_SESSION['name']="hello";
    print_r($_SESSION); // 打印结果:Array ( [name] => hello )
    session_unset(); // 释放所有的会话变量
    session_destroy(); // 销毁当前会话中的全部数据, 但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。
                        // 如果需要再次使用会话变量, 必须重新调用 session_start() 函数
    session_write_close(); // 结束当前会话并存储会话数据
    setcookie(session_name(),'',0,'/'); // session_name — 读取/设置会话名称
                                        // setcookie() 函数向客户端发送一个 HTTP cookie。
    session_regenerate_id(true); // 在不修改当前会话中数据的前提下使用新的 ID 替换原有会话 ID
    echo "<br>";

    /**
     * $GLOBALS 引用全局作用域中可用的全部变量
     * 一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
     */
    echo '---------- $GLOBALS ----------<br>';
    echo "<pre>";
    print_r($GLOBALS); // 打印以上所有结果
    echo "</pre>";

demo.php:(配合index.php使用)

<?php
    /**
     * $_GET 只能接get
     */
    print_r($_GET);
    echo "<br>";
    print_r($_GET['action']);
    echo "<br>";

    /**
     * $_POST 只能接post
     */
    print_r($_POST);
    echo "<br>";

    /**
     * $_REQUEST 能接get和post
     * 但是,容易被黑客攻击,因为什么都能接
     * 所以需要get就用$_GET,需要post就用$_POST
     * 忽略$_REQUEST的存在
     */
    print_r($_REQUEST);
    echo "<br>";

    /**
     * 不确定get还是post
     * 可以使用下面的写法
     */
    $arr = !empty($_POST) ? $_POST : $_GET;

以上就是Android程序员学PHP开发(22)-超全局数组/超全局变量-PhpStorm的内容,更多相关内容请关注PHP中文网(www.php.cn)!