PHP語法基礎篇(八):超全局變量

超全局變量是在 PHP 4.1.0 中引入的,并且是內置變量,可以在所有作用域中始終可用。
PHP 中的許多預定義變量都是"超全局的",這意味著它們在一個腳本的全部作用域中都可用。在函數或方法中無需執行 global $variable; 就可以訪問它們。
PHP 超全局變量包括:
  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION
本篇文章將記錄一些超全局變量的學習過程,其余部分將在后面的篇章中說明。

一、$GLOBALS

$GLOBALS?是一個包含所有全局變量的數組,數組的鍵就是變量的名字。

function test() {$foo = "局部變量";echo '$foo在全局作用域中的值:' . $GLOBALS["foo"] . "<br>";echo '$foo在當前作用域中的值:' . $foo . "<br>";
}$foo = "全局變量";
test();

輸出

$foo在全局作用域中的值:全局變量
$foo在當前作用域中的值:局部變量

二、$_SERVER

$_SERVER 是一個包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等信息的數組。這個數組中的條目由 Web 服務器創建,所以不能保證每個 Web 服務器都提供全部條目;服務器可能會忽略一些,或者提供此處沒有列舉出來的其它內容。

下表列出了?$_SERVER?中重要的元素:?

元素/代碼

描述

$_SERVER['PHP_SELF']

返回當前執行腳本的文件名。

$_SERVER['GATEWAY_INTERFACE']

返回服務器使用的 Common Gateway Interface (CGI) 的版本。

$_SERVER['SERVER_ADDR']

返回主機服務器的 IP 地址。

$_SERVER['SERVER_NAME']

返回主機服務器的名稱(如 www.w3school.com.cn)。

$_SERVER['SERVER_SOFTWARE']

返回服務器標識字符串(如 Apache/2.2.24)。

$_SERVER['SERVER_PROTOCOL']

返回信息協議的名稱和修訂號(如 HTTP/1.1)。

$_SERVER['REQUEST_METHOD']

返回用于訪問頁面的請求方法(如 POST)。

$_SERVER['REQUEST_TIME']

返回請求開始的時間戳(如 1377687496)。

$_SERVER['QUERY_STRING']

如果頁面是通過查詢字符串訪問的,則返回查詢字符串。

$_SERVER['HTTP_ACCEPT']

返回當前請求的 Accept 頭。

$_SERVER['HTTP_ACCEPT_CHARSET']

返回當前請求的 Accept_Charset 頭(如 utf-8,ISO-8859-1)。

$_SERVER['HTTP_HOST']

返回當前請求的 Host 頭。

$_SERVER['HTTP_REFERER']

返回當前頁面的完整 URL(不可靠,因為不是所有用戶代理都支持它)。

$_SERVER['HTTPS']

腳本是否通過安全的 HTTP 協議查詢。

$_SERVER['REMOTE_ADDR']

返回用戶查看當前頁面的 IP 地址。

$_SERVER['REMOTE_HOST']

返回用戶查看當前頁面的主機名。

$_SERVER['REMOTE_PORT']

返回用戶在機器上用于與 Web 服務器通信的端口。

$_SERVER['SCRIPT_FILENAME']

返回當前執行腳本的絕對路徑名。

$_SERVER['SERVER_ADMIN']

返回在 Web 服務器配置文件中為 SERVER_ADMIN 指令給定的值。

$_SERVER['SERVER_PORT']

返回服務器上 Web 服務器用于通信的端口(如 80)。

$_SERVER['SERVER_SIGNATURE']

返回添加到服務器生成頁面的服務器版本和虛擬主機名。

$_SERVER['PATH_TRANSLATED']

返回當前腳本基于文件系統的路徑。

$_SERVER['SCRIPT_NAME']

返回當前腳本的路徑。

$_SERVER['SCRIPT_URI']

返回當前頁面的 URI。

示例?

echo $_SERVER["SERVER_NAME"] . "<br>";
echo $_SERVER["HTTP_HOST"] . "<br>";
echo $_SERVER["SCRIPT_NAME"] . "<br>";

三、$_REQUEST

$_REQUEST?是 PHP 的一個超全局變量,它包含了提交的表單數據和所有的 cookie 數據,默認情況下包含了 $_GET,$_POST 和 $_COOKIE 的數組。也就是說,我們可以通過?$_REQUEST?關鍵字加上表單字段或 cookie 的名稱來訪問這些數據。

接下來我們創建一個 HTML 的表單,然后使用 $_REQUEST 來獲取表單提交的數據,然后將獲取到的表單數據顯示在頁面上。

<html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">名字:<input type="text" name="username" /><input type="submit" /></form><?phpif ($_SERVER["REQUEST_METHOD"] == "POST") {$name = htmlspecialchars($_REQUEST["username"]);if (!empty($name)) {echo "<h1>名字是:$name</h1>";}}?></body>
</html>

四、$_POST

當 HTTP POST 請求的 Content-Type 是 application/x-www-form-urlencoded(表單數據以鍵值對的形式編碼并發送到服務器。它是 HTML 表單默認的編碼方式。) 或 multipart/form-data(用于在 Web 表單中上傳文件或提交包含二進制數據的表單。它允許在單個 HTTP 請求中發送多個不同類型的數據(如文本字段和文件)。) 時,會將變量以關聯數組形式傳入當前腳本。

<html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">名字:<input type="text" name="username" /><input type="submit" /></form><?phpif ($_SERVER["REQUEST_METHOD"] == "POST") {$name = htmlspecialchars($_POST["username"]);if (!empty($name)) {echo "<h1>名字是:$name</h1>";}}?></body>
</html>

五、$_GET

通過 URL 參數(又叫查詢字符串)傳遞給當前腳本的變量的數組。注意:該數組不僅僅對表單 method 為 GET 的請求生效,而是會針對所有帶 查詢字符串 的請求。

<a href="demo_get.php?name=Hello">測試 $_GET</a>

demo_get.php

<?php
echo "<h1>" . $_GET["name"] . "</h1>";

六、其它超全局變量

其它的超全局變量在這里只做簡單的說明,具體的使用會在后續的篇章中給出。

$_FILES — HTTP 文件上傳變量:通過 HTTP POST 方式上傳到當前腳本的項目的數組。

$_ENV — 環境變量:通過環境方式傳遞給當前腳本的變量的數組。這些變量被從 PHP 解析器的運行環境導入到 PHP 的全局命名空間。很多是由支持 PHP 運行的 Shell 提供的,并且不同的系統很可能運行著不同種類的 Shell,所以 $_ENV 數組中的內容是和當前運行環境相關的。

$_COOKIE — HTTP Cookies:通過 HTTP Cookies 方式傳遞給當前腳本的變量的數組。

$_SESSION — Session 變量:當前腳本可用 SESSION 變量的數組。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912944.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912944.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912944.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NumPy-核心函數concatenate()深度解析

NumPy-核心函數concatenate深度解析 一、concatenate()基礎語法與核心參數函數簽名與核心作用基礎特性&#xff1a;形狀匹配規則 二、多維數組拼接實戰示例1. 一維數組&#xff1a;最簡單的序列拼接2. 二維數組&#xff1a;按行與按列拼接對比按行拼接&#xff08;垂直方向&…

aws(學習筆記第四十八課) appsync-graphql-dynamodb

aws(學習筆記第四十八課) appsync-graphql-dynamodb 使用graphql來方便操作dynamodb 理解graphql中的graphql api&#xff0c;schema&#xff0c;resolver 學習內容&#xff1a; graphqlgraphql apischemaresolver 1. 代碼連接和修改 1.1 代碼鏈接 代碼鏈接&#xff08;app…

關于微前端框架micro,子應用設置--el-primary-color失效的問題

設置了manualChunks導致失效,去掉即可,比較小眾的問題 下面是deepseek的分析 關于 manualChunks 導致 Element Plus 主題變量失效的問題 你找到的確實是問題的關鍵所在。這個 manualChunks 配置影響了 Element Plus 樣式和變量的加載順序&#xff0c;從而導致主題變量失效。…

MySQL 學習 之 你還在用 TIMESTAMP 嗎?

目錄 1. 弊端1.1. 取值范圍1.2. 時區依賴1.3. 隱式轉換 2. 區別3. 解決 1. 弊端 1.1. 取值范圍 TIMESTAMP 的取值范圍為 1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC&#xff0c;超出范圍的數據會被強制歸零或觸發異常?。 具體表現為在基金債券等業務中&#xff0…

java中字節和字符有何區別,為什么有字節流和字符流?

在Java中&#xff0c;字節&#xff08;byte&#xff09;和字符&#xff08;char&#xff09;是兩種不同的數據類型&#xff0c;它們的主要區別在于所表示的數據單位、用途以及編碼方式,字節流和字符流的區分就是為了解決編碼問題。 字節&#xff08;byte&#xff09;&#xff…

伴隨矩陣 線性代數

伴隨矩陣的定義 伴隨矩陣的作用是什么&#xff1f;我們可以看到其伴隨矩陣乘上自己等于一個數&#xff08;自身的行列式&#xff09;乘以E&#xff0c;所以對于一個方陣來說&#xff0c;其逆矩陣就是自己的伴隨矩陣的倍數。 所以說伴隨矩陣的作用就是用來更好的求解逆矩陣的。…

百勝軟件獲邀走進華為,AI實踐經驗分享精彩綻放

在數字化浪潮席卷全球的當下&#xff0c;零售行業正經歷著深刻變革&#xff0c;人工智能技術成為重塑行業格局的關鍵力量。6月26日&#xff0c;“走進華為——智領零售&#xff0c;AI賦能新未來”活動在華為練秋湖研發中心成功舉辦。百勝軟件作為數字零售深耕者&#xff0c;攜“…

六種扎根理論的編碼方法

一、實境編碼 1.概念&#xff1a;實境編碼是一種基于參與者原生語言的質性編碼方法&#xff0c;其核心在于直接采用研究對象在訪談、觀察或文本中使用的原始詞匯、短語或獨特表達作為分析代碼。該方法通過保留數據的"原生態"語言形式&#xff08;如方言、隱喻、習慣用…

【Spring篇09】:制作自己的spring-boot-starter依賴1

文章目錄 1. Spring Boot Starter 的本質2. Starter 的模塊結構&#xff08;推薦&#xff09;3. 制作 xxx-spring-boot-autoconfigure 模塊3.1 添加必要的依賴3.2 編寫具體功能的配置類3.3 編寫自動化配置類 (AutoConfiguration)3.4 注冊自動化配置類 (.imports 或 spring.fact…

Qt6之qml自定義控件開發流程指南

Qt6之qml自定義控件開發流程指南 &#x1f6e0;? 一、基礎控件創建 定義 QML 文件 在工程中新建 QML 文件&#xff08;如 CustomButton.qml&#xff09;&#xff0c;文件名首字母大寫。 使用基礎組件&#xff08;如 Rectangle、Text&#xff09;構建控件邏輯&#xff0c;通過…

Vue簡介,什么是Vue(Vue3)?

什么是Vue&#xff1f; Vue是一款用于構建用戶界面的JavaScript框架。 它基于標準HTML、CSS和JavaScript構建&#xff0c;并提供了一套聲明式的、組件化的編程模型&#xff0c;幫助你高效地開發用戶界面。無論是簡單的還是復雜地界面&#xff0c;Vue都可以勝任。 聲明式渲染…

從零開始構建Airbyte數據管道:PostgreSQL到BigQuery實戰指南

作為數據工程師&#xff0c;ETL&#xff08;Extract, Transform, Load&#xff09;流程是日常工作的核心。然而&#xff0c;構建和維護數據管道往往耗時且復雜。幸運的是&#xff0c;開源工具Airbyte提供了一種更便捷的解決方案——它支持350預構建連接器&#xff0c;允許通過無…

JavaScript的初步學習

目錄 JavaScript簡介 主要特點 主要用途 JavaScript的基本特性 JavaScript的引入方式 1. 內聯方式 (Inline JavaScript) 2. 內部方式 (Internal JavaScript / Embedded JavaScript) 3. 外部方式 (External JavaScript) JavaScript的語法介紹 1.書寫語法 2.輸出語句 3.…

洛谷P1379 八數碼難題【A-star】

P1379 八數碼難題 八數碼難題首先要進行有解性判定&#xff0c;避免無解情況下盲目搜索浪費時間。 有解性判定 P10454 奇數碼問題 題意簡述 在一個 n n n \times n nn 的網格中進行&#xff0c;其中 n n n 為奇數&#xff0c; 1 1 1 個空格和 [ 1 , n 2 ? 1 ] [1,n^2…

MySQL Buffer Pool 深度解析:從架構設計到性能優化(附詳細結構圖解)

在 MySQL 數據庫的世界里&#xff0c;有一個決定性能上限的"神秘倉庫"——Buffer Pool。它就像超市的貨架&#xff0c;把最常用的商品&#xff08;數據&#xff09;放在最方便拿取的地方&#xff0c;避免每次都要去倉庫&#xff08;磁盤&#xff09;取貨。今天我們就…

使用numpy的快速傅里葉變換的一些問題

離散傅里葉變換&#xff08;DFT&#xff09;的頻率&#xff08;或波數&#xff09;確實主要由采樣點數和物理步長決定。 最高波數和最小波長的乘積是1。單位長度內波的周期數。 &#xff08;注意角波數是 k 2 π λ k \frac{2 \pi}{\lambda} kλ2π?&#xff09; 使用numpy…

DVWA靶場通關筆記-CSRF(High級別)

目錄 一、CSRF Token 二、代碼審計&#xff08;High級別&#xff09; 1、滲透準備 2、源碼分析 三、滲透實戰 1、滲透準備 2、修改URL重放失敗 3、burpsuite嘗試重放失敗 4、安裝CSRF Token Tracker 5、安裝logger插件 6、配置CSRF Token Tracker 7、bp再次重放報文…

Redis實戰:數據安全與性能保障

數據安全 持久化策略 RDB持久化&#xff1a;通過創建快照將內存中的數據寫入到磁盤上的RDB文件中。可以在配置文件中設置save參數來指定在多少秒內有多少次寫操作時觸發快照保存。例如&#xff0c;save 900 1表示900秒內至少有1次寫操作時保存快照。 AOF持久化&#xff1a;將每…

人臉活體識別3:C/C++實現實時眨眼、張嘴、點頭、搖頭檢測

> 當AI能識破照片與真人的區別,我們才真正跨入生物識別安全時代 --- ### 一、活體檢測:數字世界的守門人 **傳統人臉識別的致命缺陷**: - 高清照片欺騙成功率 > 85% - 視頻回放攻擊成本 < $50 - 3D面具破解率高達72% **我們的解決方案**: ```mermaid graph …

【Linux】AlmaLinux 無法使用root用戶登錄cockpit控制臺問題解決

在虛擬機安裝AlmaLinux 9.6&#xff0c;安裝過程中需要允許使用root用戶和SSH協議登錄服務器。但是&#xff0c;在使用root用戶登錄cockpit管理后臺時&#xff0c;系統提示“權限被拒絕”。 經過查詢資料&#xff0c;可以通過下面的方法來解決此問題。 編輯 /etc/cockpit/disa…