PHP 超全域性變數



PHP 解析器在其全域性名稱空間中為當前指令碼填充了許多預定義變數。預定義變數被稱為“PHP 超全域性變數”。

  • 任何在任何函式、方法或類之外宣告的使用者定義變數也是全域性變數。但是,要訪問它,需要使用global關鍵字。

  • 相反,超全域性變數始終可以在 PHP 指令碼中的任何位置使用,無需使用global關鍵字。

PHP 中的大多數超全域性變數都是關聯陣列,由 Web 伺服器填充。因此,如果指令碼在命令列環境中執行,一些超全域性變數可能為空。

PHP 中的超全域性變數列表包括以下內容:

  • $GLOBALS

  • $_SERVER

  • $_GET

  • $_POST

  • $_FILES

  • $_COOKIE

  • $_SESSION

  • $_REQUEST

  • $_ENV

本章將簡要介紹 PHP 中這些超全域性變數。在後續章節中,我們將詳細討論這些超全域性變數。

$GLOBALS

這是一個關聯陣列,包含對所有全域性定義變數的引用。變數名構成鍵,其內容是關聯陣列的值。

$_SERVER

所有伺服器和執行環境相關資訊都包含在這個關聯陣列中。

5.4.0 之前的 PHP 版本包含 $HTTP_SERVER_VARS,包含相同的資訊,但現在已被移除。

$_GET

這是一個關聯陣列,包含透過附加到 HTTP 請求 URL 的查詢字串傳遞給當前指令碼的變數。請注意,除了 GET 請求之外,所有帶有查詢字串的請求都會填充該陣列。

查詢字串是所有變數及其值的列表,形式為 var=val,並由“&”符號連線。

查詢字串本身附加在“?”符號之後 PHP 指令碼的名稱之後。例如,https:///hello.php?first_name=Amar&last_name=Sharma

$_POST

這是一個關聯陣列,包含透過使用URLEncodedmultipart/form-data內容型別的 HTTP POST 方法傳遞給 URL 的鍵值對。

$HTTP_POST_VARS 也包含與 $_POST 相同的資訊,但它不是超全域性變數,現在已被棄用。使用 POST 請求將資料傳送到伺服器的最簡單方法是將 HTML 表單的 method 屬性指定為 POST。

$_FILES

$_FILES 變數是一個關聯陣列,包含透過 HTTP POST 方法上傳的專案。當 HTML 表單包含一個檔案型別的輸入元素,其 enctype 屬性設定為 multipart/form-data,並且 method 屬性設定為 HTTP POST 方法時,就會上傳檔案。

$_COOKIE

Cookie 是伺服器儲存在客戶端計算機上的文字檔案,用於跟蹤用途。

超全域性變數 $_COOKIE 儲存與 HTTP 請求一起傳遞給當前 PHP 指令碼的變數,形式為 Cookie。

$_SESSION

HTTP 會話是指使用者與伺服器建立連線的時間和連線終止之間的時間段。在此期間,某些資料以會話變數的形式跨頁面持續可用。

$_SESSION 超全域性變數是一個關聯陣列,包含當前指令碼可用的會話變數。

$_REQUEST

$_REQUEST 是一個關聯陣列,它是 $_GET、$_POST 和 $_COOKIE 變數內容的集合。

這些變數的順序由 "php.ini" 檔案中requests_ordervariables_order設定的值決定。

$_ENV

$_ENV 是一個關聯陣列,儲存當前指令碼可用的所有環境變數。如果 PHP 作為伺服器模組或 CGI 處理器執行,此陣列還包括 CGI 變數。

廣告