Android程式設計PHP開發(22)-超全域陣列/超全域變數-PhpStorm

黄舟
發布: 2023-03-06 10:20:01
原創
1244 人瀏覽過

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[&#39;REMOTE_ADDR&#39;];
    }

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

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

    /**
     * $GLOBALS 引用全局作用域中可用的全部变量
     * 一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
     */
    echo &#39;---------- $GLOBALS ----------<br>&#39;;
    echo "<pre class="brush:php;toolbar:false">";
    print_r($GLOBALS); // 打印以上所有结果
    echo "
";
登入後複製

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

<?php
    /**
     * $_GET 只能接get
     */
    print_r($_GET);
    echo "<br>";
    print_r($_GET[&#39;action&#39;]);
    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)!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!