6.4.2 服務(wù)器變量$_SERVER和環(huán)境變量$_ENV
超全局?jǐn)?shù)組(預(yù)定義變量)
服務(wù)器變量: $_SERVER
環(huán)境變量: $_ENV
HTTP GET變量: $_GET
HHTP POST變量: $_POST
request變量: $_REQUEST
HTTP文件上傳變量: $_FILES
HTTP Cookies: $_COOKIE
Session變量: $_SESSION
Global變量: $_GLOBALS
服務(wù)器變量: $_SERVER
?$_SERVER是一個包含諸如頭信息(header)觅赊、路徑(path)和腳本位置(script locations)的數(shù)組。數(shù)組的實(shí)體由 web 服務(wù)器創(chuàng)建。不能保證所有的服務(wù)器都能產(chǎn)生所有的信息启涯;服務(wù)器可能忽略了一些信息,或者產(chǎn)生了一些未在下面列出的新的信息稍浆。這是一個自動全局變量吐句。這只不過意味這它在所有的腳本中都有效。在函數(shù)或方法中不需要使用
global $_SERVER;
–*PHP_SELF*:當(dāng)前正在執(zhí)行腳本的文件名
–*DOCUMENT_ROOT*:當(dāng)前運(yùn)行腳本所在的文檔根目錄
–*REMOTE_ADDR*:正在瀏覽當(dāng)前頁面用戶的 IP 地址挟阻。
環(huán)境變量:$_ENV
在解析器運(yùn)行時琼娘,這些變量從環(huán)境變量轉(zhuǎn)變?yōu)?PHP 全局變量名稱空間(namespace)。它們中的許多都是由 PHP 所運(yùn)行的系統(tǒng)決定附鸽。完整的列表是不可能的脱拼。請查看系統(tǒng)的文檔以確定其特定的環(huán)境變量。
這是一個自動全局變量坷备。它在所有的腳本中都有效熄浓。在函數(shù)或方法中不需要使用 global $_ENV;
HTTP GET變量:$_GET
通過 HTTP GET 方法傳遞的變量組成的數(shù)組。是自動全局變量.
http://localhost/login.php?name=zhangsan&id=100
<?php
echo “參數(shù)name的值:”.$_GET[“name”]省撑; //zhangsan
echo “參數(shù)id的值:”.$_GET[“id”]赌蔑; //100
?>
HTTP POST變量:$_POST
通過 HTTP POST 方法傳遞的變量組成的數(shù)組。是自動全局變量竟秫。
與$_GET相似娃惯,只是方法不一樣。
request變量:$_REQUEST
此關(guān)聯(lián)數(shù)組包含 $_GET肥败,$_POST 和 $_COOKIE 中的全部內(nèi)容趾浅。
HTTP文件上傳變量:$_FILES
通過 HTTP POST 方法傳遞的已上傳文件項目組成的數(shù)組愕提。是自動全局變量。
HTTP Cookies:$_COOKIE
通過 HTTP cookies 傳遞的變量組成的數(shù)組皿哨。是自動全局變量浅侨。
Session變量:$_SESSION
?包含當(dāng)前腳本中 session 變量的數(shù)組。參閱 Session 函數(shù)文檔以獲得更多信息证膨。
Global變量:$GLOBALS
由所有已定義全局變量組成的數(shù)組如输。變量名就是該數(shù)組的索引。
例test.php
<?php
/*
* 超全局?jǐn)?shù)組(變量), 在PHP的腳本中椎例, 已經(jīng)聲明完的變量挨决, 你可以直接就去使用即可! 變量的名子已經(jīng)規(guī)定好的了
*
*
* $_SERVER
* $_ENV
* $_GET
* $_POST
* $_REQUEST
* $_FILES
* $_COOKIE
* $_SESSION
* $GLOBALS
*
*
* 超 全局 數(shù)組
*
*
* 1. 數(shù)組(關(guān)聯(lián)數(shù)組), 就和你自己聲明的數(shù)組是一樣的操作方式
* 2. 全局
* 3. 每個預(yù)定義的數(shù)組都有自獨(dú)特的能力
*
*/
function getip() {
if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
} elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if(!empty($_SERVER['REMOTE_ADDR'])) {
return $_SERVER['REMOTE_ADDR'];
}else{
return '未知IP';
}
}
echo getip();
echo '<br>';
echo $_SERVER['HTTP_USER_AGENT'];
echo '<br>';
echo count($_SERVER);
echo "<br>";
echo '<pre>';
print_r($_SERVER);
echo '</pre>';