超級(jí)全局變量在PHP 4.1.0之后被啟用, 是PHP系統(tǒng)中自帶的變量,在一個(gè)腳本的全部作用域中都可用益缠。
PHP中預(yù)定義了幾個(gè)超級(jí)全局變量(superglobals) 菜枷,這意味著它們?cè)谝粋€(gè)腳本的全部作用域中都可用称鳞。 你不需要特別說(shuō)明涮较,就可以在函數(shù)及類(lèi)中使用。
PHP 超級(jí)全局變量列表:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
$GLOBALS
$GLOBALS 是一個(gè)包含了全部變量的全局組合數(shù)組冈止。變量的名字就是數(shù)組的鍵狂票。
<?php
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
//輸出:
/*
100
*/
以上實(shí)例中 z 是一個(gè)$GLOBALS數(shù)組中的超級(jí)全局變量,該變量同樣可以在函數(shù)外訪問(wèn)熙暴。
$_SERVER
$_SERVER 是一個(gè)包含了諸如頭信息(header)
闺属、路徑(path)
、以及腳本位置(script locations)
等等信息的數(shù)組周霉。這個(gè)數(shù)組中的項(xiàng)目由 Web 服務(wù)器創(chuàng)建掂器。不能保證每個(gè)服務(wù)器都提供全部項(xiàng)目;服務(wù)器可能會(huì)忽略一些俱箱,或者提供一些沒(méi)有在這里列舉出來(lái)的項(xiàng)目国瓮。
<?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'];
?>
//輸出
/*
/try/demo_source/demo_global_server.php
www.runoob.com
www.runoob.com
http://www.runoob.com/try/showphp.php?filename=demo_global_server
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
/try/demo_source/demo_global_server.php
*/
當(dāng)然$_SERVER中不止這些信息,還有很多可以查api狞谱。
$_REQUEST
$_REQUEST 用于收集HTML表單提交的數(shù)據(jù)乃摹。
以下實(shí)例顯示了一個(gè)輸入字段(input)及提交按鈕(submit)的表單(form)。 當(dāng)用戶(hù)通過(guò)點(diǎn)擊 "Submit" 按鈕提交表單數(shù)據(jù)時(shí), 表單數(shù)據(jù)將發(fā)送至<form>
標(biāo)簽中 action 屬性中指定的腳本文件
跟衅。 在這個(gè)實(shí)例中孵睬,我們指定文件來(lái)處理表單數(shù)據(jù)。如果你希望其他
的PHP文件來(lái)處理該數(shù)據(jù)伶跷,你可以修改該指定的腳本文件名掰读。 然后,我們可以使用超級(jí)全局變量 $_REQUEST 來(lái)收集表單中的 input 字段數(shù)據(jù):
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_REQUEST['fname'];
echo $name;
?>
</body>
</html>
$_POST
$_POST 被廣泛應(yīng)用于收集表單數(shù)據(jù)叭莫,在HTML form標(biāo)簽的指定該屬性:"method="post"蹈集。
以下實(shí)例顯示了一個(gè)輸入字段(input)及提交按鈕(submit)的表單(form)。 當(dāng)用戶(hù)通過(guò)點(diǎn)擊 "Submit" 按鈕提交表單數(shù)據(jù)時(shí), 表單數(shù)據(jù)將發(fā)送至<form>標(biāo)簽中 action 屬性中指定的腳本文件雇初。 在這個(gè)實(shí)例中雾狈,我們指定文件來(lái)處理表單數(shù)據(jù)。如果你希望其他的PHP文件來(lái)處理該數(shù)據(jù)抵皱,你可以修改該指定的腳本文件名善榛。 然后,我們可以使用超級(jí)全局變量 $_POST 來(lái)收集表單中的 input 字段數(shù)據(jù):
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_POST['fname'];
echo $name;
?>
</body>
</html>
$_GET
$_GET 同樣被廣泛應(yīng)用于收集表單數(shù)據(jù)呻畸,在HTML form標(biāo)簽的指定該屬性:"method="get"移盆。
$_GET 也可以收集URL中發(fā)送的數(shù)據(jù)。
<html>
<body>
<a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>
</body>
</html>
從定義上來(lái)看$_POST和$_REQUEST的定義一樣伤为,那到底有什么區(qū)別呢咒循?
這里有比較簡(jiǎn)單的解釋?zhuān)?br>
$_GET變量接受所有以get方式發(fā)送的請(qǐng)求据途,及瀏覽器地址欄中的?之后的內(nèi)容
$_POST變量接受所有以post方式發(fā)送的請(qǐng)求,例如叙甸,一個(gè)form以method=post提交颖医,提交后php會(huì)處理post過(guò)來(lái)的全部變量
而$_REQUEST支持兩種方式發(fā)送過(guò)來(lái)的請(qǐng)求,即post和get它都可以接受裆蒸,顯示不顯示要看傳遞方法熔萧,get會(huì)顯示在url中(有字符數(shù)限制),post不會(huì)在url中顯示僚祷,可以傳遞任意多的數(shù)據(jù)(只要服務(wù)器支持)