- $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 變量的數組。