1. 程式人生 > >PHP-變數(三)(區域性變數、全域性變數、超全域性變數)

PHP-變數(三)(區域性變數、全域性變數、超全域性變數)

1. 變數的劃分

JS 中 變數分兩類:區域性變數 和 全域性變數。

PHP 中 變數分三類:區域性變數、全域性變數、超全域性變數

2. 區域性變數

在函式內部宣告的變數,就是區域性變數,當函式執行完畢,區域性變數就消失了。區域性變數,只能在函式內部使用。

// 定義函式abc
function abc() {
    // 在函式內部宣告變數:區域性變數
    $a = 100;
}

驗證區域性變數不能在函式外使用,如下圖

這裡寫圖片描述

3. 全域性變數

在函式外部宣告的變數,就是全域性變數。在 PHP 中,全域性變數,在函式中不能使用,網頁執行完畢,全域性變數消失。

// 在函式外部宣告的變數:全域性變數
$b = 200;

// 定義函式abc
function abc() {
    // 在函式內部宣告變數:區域性變數
    $a = 100;
}

驗證全域性變數不能在函式內部使用,如下圖

這裡寫圖片描述

4. 超全域性變數(也叫超全域性陣列變數)

是系統定義的變數,就是超全域性變數。該變數可以在任何地方直接使用。

4.1 超全域性變數有哪些?

超全域性變數 描述
$_GET 主要用來獲取 HTTP GET方式傳遞的資料。
$_POST 主要用來獲取 HTTP POST方式傳遞的資料。
$_REQUEST
主要用來獲取 GET 和 POST 方式傳遞的資料,但是速度相對較慢。
$_SERVER 主要用來獲取伺服器執行環境的相關資訊。
$GLOBALS 主要包含GET_POST、$_COOKIE 陣列的內容。
$_SESSION 主要獲取伺服器端的會話資訊。
$_COOKIE 主要獲取客戶端的會話資訊。
$_FILES 主要獲取上傳檔案的相關資訊。
$ENV 獲取環境資訊。(不常用)

4.2 $_POST

主要用來獲取 HTTP POST 方式傳遞到伺服器的資料

特點:

① 相對安全,資料不在位址列顯示

② 可以傳送任何型別的資料

③ 對資料大小沒有限制

以$_POST為例,實現簡單的表單提交,伺服器端顯示獲取到的資料

<?php
    /*
     * 客戶端程式碼
    */
    // 驗證表單資訊是否匹配, 匹配就獲取裡面的資料
    if(isset($_POST['ac']) && $_POST['ac'] == 'login') {
        // 獲取表單提交資料
        $username = $_POST['username'];
        $password = $_POST['password'];

        echo "使用者名稱:$username, 密碼:$password";

    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>

    <form action="./index.php" name="form1" method="post" >
        <table>
            <tr>
                <td>使用者名稱:</td>
                <td><input type="text" name="username" placeholder="請輸入使用者名稱"></td>
            </tr>

            <tr>
                <td>密碼:</td>
                <td><input type="password" name="password" placeholder="請輸入密碼"></td>
            </tr>
            <tr>
                <td><input type="submit" value="提交"></td>
                <!--隱藏域,用於表單驗證-->
                <td><input type="hidden" name="ac" value="login"></td>
            </tr>
        </table>
    </form>
</body>
</html>
<?php
/*
 * 服務端程式碼
*/
// 驗證表單資訊是否匹配, 匹配就獲取裡面的資料
if(isset($_POST['ac']) && $_POST['ac'] == 'login') {
    // 獲取表單提交資料
    $username = $_POST['username'];
    $password = $_POST['password'];

    echo "使用者名稱:$username<br>密碼:$password";

}
?>


/**
* 實現了簡單的表單驗證
* 要使用我的例項程式碼,需要滿足以下條件
* ① 開啟Apache伺服器
* ② 設定域名 www.phpdemo1.com
* ③ 保證index.php 和 server.php 在根目錄下
*/

這裡寫圖片描述

4.3 $_GET

用來獲取 HTTP GET 方式傳送到伺服器的資料。

特點:

① 所有的資料都會顯示在位址列,不安全

② 只能傳送少量的資料。

③ 只能傳送字串型別的資料。

這裡寫圖片描述

這裡寫圖片描述

注意:通過位址列傳送的請求都是GET請求

那麼,我如果想要同時傳送GET 和 POST 請求該怎麼辦呢?

在上例的基礎上稍作改動

這裡寫圖片描述

4.4 $_REQUEST

REQUEST_GET、POST_COOKIE 陣列的內容

雖然$_REQUEST 可以獲取 GET 或 POST 提交的資料,但速度表較慢。

4.5 $_SERVER

$_SERVER 可以獲取服務端執行環境的相關資訊。

這裡寫圖片描述