Androidプログラマーが学ぶPHP開発(22) ~スーパーグローバル配列・スーパーグローバル変数~ PhpStorm

黄舟
リリース: 2023-03-06 10:20:01
オリジナル
1282 人が閲覧しました

PHP スーパー グローバル配列は、PHP 定義済み配列とも呼ばれ、PHP エンジンによって組み込まれており、開発者が再定義する必要はありません。 PHP スクリプトを実行すると、PHP は一部のデータをスーパー グローバル配列に自動的に配置します。

PHP の定義済み変数の多くは「スーパーグローバル」です。これは、スクリプトのスコープ全体で使用できることを意味します。これらは、 global $variable; を実行せずに、関数またはメソッド内でアクセスできます。

phpスーパーグローバル変数リスト:

$_GET[] GETメソッドで送信された変数配列を取得

$_POST[] POSTメソッドで送信された変数配列を取得

$_COOKIE [] 現在の Web サイトの Cookie 識別子を取得および設定します

$_SESSION[] 現在のユーザーの訪問の一意の識別子を、sessionid やカスタム セッション データなどの配列形式で取得します

$_ENV [] 現在の PHP 環境変数の配列

$_SERVER[] 現在の PHP サーバー変数の配列

$_FILES[] ファイルのアップロード時に現在のスクリプトに送信されたパラメータ値、配列形式で反映されます

$_REQUEST[] 現在のスクリプトによって送信されたすべてのリクエスト、$_GET、$_POST、$_COOKIE のすべてのアクションが含まれます

$GLOBALS[] には、実行中のスクリプト

インデックスのすべてのスーパーグローバル変数の参照コンテンツが含まれます。 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 函数:
     * //m.sbmmt.com/
     *
     * Session 开始、存储、终结:
     * //m.sbmmt.com/
     */
    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: (match index.php Use)

<?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 中国語 Web サイト (m.sbmmt.com) に注意してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート