超級全局在PHP 4.1.0版本引入,並內置變量,它們總是在所有的範圍內有效。
PHP全局變量 - 超全局
在PHP中的幾個預定義變量"superglobals" ,這意味著它們始終可以訪問,無論範圍-你可以從任何函數,類或文件的訪問,而不必做任何特殊。
PHP的全局變量是:
- $ GLOBALS
- $ _ SERVER
- $ _REQUEST
- $ _ POST
- $ _GET
- $ _FILES
- $ _ENV
- $ _COOKIE
- $ _SESSION
本章將介紹一些超全局,其餘的將在後面的章節來解釋。
PHP $ GLOBALS
$ GLOBALS是用於從任何位置訪問在PHP腳本全局變量(也從函數或方法中)一個PHP超全局變量。
PHP店在名為$ GLOBALS [陣列中的所有全局變量index 。 該指數保持可變的名稱。
下面的例子演示了如何使用超級全局變量$ GLOBALS:
例
<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] =
$GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
運行示例» 在上面的例子中,由於z是變量存在於$ GLOBALS陣列內,這也是來自功能外部接近!
PHP $ _ SERVER
$ _ SERVER是一個PHP超全局變量持有約標題,路徑和腳本位置的信息。
下面的例子演示了如何使用某些$ _SERVER元素:
例
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo
$_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo
$_SERVER['SCRIPT_NAME'];
?>
運行示例» 下表列出了可以去裡面$ _SERVER中最重要的元素:
元/碼 | 描述 |
---|---|
$ _ SERVER ['PHP_SELF'] | 返回當前正在執行腳本的文件名 |
$ _ SERVER ['GATEWAY_INTERFACE'] | 返回通用網關接口的版本(CGI)服務器使用 |
$ _ SERVER ['SERVER_ADDR'] | 返回主服務器的IP地址 |
$ _ SERVER ['SERVER_NAME'] | 返回主服務器的名稱(such as www.w3ii.com) |
$ _ SERVER ['SERVER_SOFTWARE'] | 返回服務器標識字符串(such as Apache/2.2.24) |
$ _ SERVER ['SERVER_PROTOCOL'] | 返回的名稱和版本信息協議(such as HTTP/1.1) |
$ _ SERVER ['REQUEST_METHOD'] | 返回用於訪問該頁面的請求方法(such as POST) |
$ _ SERVER ['REQUEST_TIME'] | 返回請求的開始的時間戳(such as 1377687496) |
$ _ SERVER ['QUERY_STRING'] | 返回查詢字符串,如果該頁面通過查詢字符串訪問 |
$ _ SERVER ['HTTP_ACCEPT'] | 返回當前請求的Accept報頭 |
$ _ SERVER ['HTTP_ACCEPT_CHARSET'] | 返回Accept_Charset頭從當前請求(例如UTF-8,ISO-8859-1) |
$ _ SERVER ['HTTP_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值(如果你的腳本在虛擬主機上運行,這將是該虛擬主機定義的值) (such as [email protected]) |
$ _ SERVER ['SERVER_PORT'] | 返回正在使用的web服務器進行通信的服務器計算機上的端口(such as 80) |
$ _ SERVER ['SERVER_SIGNATURE'] | 返回其添加到服務器生成的網頁服務器版本和虛擬主機名 |
$ _ SERVER ['PATH_TRANSLATED'] | 返回到當前腳本的基於文件系統的路徑 |
$ _ SERVER ['SCRIPT_NAME'] | 返回當前腳本的路徑 |
$ _ SERVER ['SCRIPT_URI'] | 返回當前頁面的URI |
PHP $ _REQUEST
PHP $ _REQUEST是用來提交HTML表單後收集數據。
下面的例子示出了具有輸入字段和提交按鈕的形式。 當用戶通過點擊提交數據"Submit" ,則表格數據被發送到在指定的文件action的屬性<form>標記。 在這個例子中,我們指出這個文件本身進行處理表單數據。 如果您想使用其他PHP文件來處理表單數據,替換與您所選擇的文件名。 然後,我們就可以使用超級全局變量$ _REQUEST收集輸入字段的值:
例
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_REQUEST['fname'];
if (empty($name)) {
echo "Name
is empty";
} else {
echo $name;
}
}
?>
</body>
</html>
運行示例» PHP $ _ POST
PHP $ _ POST被廣泛使用的方法=“郵報”提交HTML表單後,收集表單數據。 $ _ POST還廣泛用於傳遞變量。
下面的例子示出了具有輸入字段和提交按鈕的形式。 當用戶通過點擊提交數據"Submit" ,則表格數據被發送到在指定的文件action的屬性<form>標記。 在這個例子中,我們指向文件本身進行處理表單數據。 如果您想使用其他PHP文件來處理表單數據,替換與您所選擇的文件名。 然後,我們就可以使用超級全局變量$ _ POST收集輸入字段的值:
例
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_POST['fname'];
if (empty($name)) {
echo "Name
is empty";
} else {
echo $name;
}
}
?>
</body>
</html>
運行示例» PHP $ _GET
PHP $ _GET也可以使用方法=“獲得”提交HTML表單後,收集表單數據。
$ _GET還可以收集在URL發送的數據。
假設我們有一個包含帶有參數的超鏈接的HTML頁面:
<html>
<body>
<a href="test_get.php?subject=PHP&web=w3ii.com">Test $GET</a>
</body>
</html>
當用戶點擊該鏈接"Test $GET"參數"subject"和"web"發送到"test_get.php"然後就可以訪問他們的價值觀"test_get.php"與$ _GET。
下面的例子示出了在代碼"test_get.php"
例
<html>
<body>
<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>
</body>
</html>
運行示例» 提示:您將了解更多關於$ _ POST和$ _GET在PHP形式的篇章。