什么是超級(jí)全局(Superglobals)變量?
超級(jí)全局變量是PHP中內(nèi)置的、特別定義的數(shù)組變量。它們可以隨時(shí)在腳本中的任何位置使用超級(jí)全局變量來(lái)訪問(wèn)信息。即,不管作用域是什么,都可以輕松獲取有關(guān)請(qǐng)求或其上下文的信息。
超級(jí)全局變量可以從任何函數(shù)、類(lèi)或任何文件訪問(wèn),而無(wú)需執(zhí)行任何特殊任務(wù),如聲明任何全局變量等。它們主要會(huì)用于存儲(chǔ)和獲取應(yīng)用程序中從一個(gè)頁(yè)面到另一個(gè)頁(yè)面等的信息。
下面是PHP中可用的超全局變量列表:
● $ GLOBALS
● $ _ SERVER
● $ _REQUEST
● $ _GET
● $ _ POST
● $ _SESSION
● $ _COOKIE
● $ _FILES
● $ _ENV
接下來(lái)我們來(lái)詳細(xì)介紹一下其中的一些超級(jí)全局變量。
$ GLOBALS
$ GLOBALS是一個(gè)超全局變量,它存儲(chǔ)腳本中聲明的所有變量,可用于訪問(wèn)腳本中任何位置的任何變量。
PHP將所有全局變量存儲(chǔ)在數(shù)組$ GLOBALS []中,這個(gè)數(shù)組有一個(gè)索引,用于保存全局變量名稱(chēng),可以使用該名稱(chēng)進(jìn)行訪問(wèn)。
下面我們就來(lái)看看如何使用$ GLOBALS:
?php $x = 300; $y = 200; function multiplication(){ $GLOBALS[ z ] = $GLOBALS[ x ] * $GLOBALS[ y multiplication(); echo $z; ?
在上面的代碼中,聲明了兩個(gè)全局變量$ x和$ y,并賦值300和200。然后定義函數(shù)multiplication()以將$ x和$ y值的相乘并存儲(chǔ)在GLOBAL數(shù)組中定義的另一個(gè)變量$ z中。
我們知道變量$ x和$ y不會(huì)在函數(shù)multiplication()中被訪問(wèn),因?yàn)樗鼈兾丛谄渲新暶鳎坏覀兛梢酝ㄟ^(guò)使用$ GLOBALS數(shù)組變量訪問(wèn)它來(lái)實(shí)現(xiàn)。
當(dāng)調(diào)用函數(shù)square()時(shí),就會(huì)執(zhí)行變量$ x和$ y值的相乘;然后可以直接顯示。
獲得的相乘結(jié)果,因?yàn)樽兞?z也存在于$ GLOBALS數(shù)組變量中。
輸出:
$ _SERVER
$ _SERVER是一個(gè)PHP超級(jí)全局變量,用于存儲(chǔ)有關(guān)標(biāo)題(標(biāo)頭),路徑和腳本位置的信息,即它存儲(chǔ)有關(guān)Web及其請(qǐng)求的信息。其中的一些元素用于從超全局變量$ _SERVER獲取信息。
$ _SERVER變量中使用了許多信息元素。其中一些列表如下:
元件描述$ _ SERVER [ PHP_SELF ] 返回當(dāng)前正在執(zhí)行的腳本的文件名。 $ _ SERVER [ SERVER_ADDR ]返回主機(jī)服務(wù)器的IP地址。 $ _ SERVER [ SERVER_NAME ] 返回主機(jī)服務(wù)器的名稱(chēng)。 $ _ SERVER [ QUERY_STRING ] 如果通過(guò)查詢(xún)字符串訪問(wèn)頁(yè)面,則返回查詢(xún)字符串。 $ _ SERVER [ REQUEST_TIME ] 返回請(qǐng)求開(kāi)始的時(shí)間戳。下面我們就來(lái)看看如何使用$ _SERVER:
?php echo $_SERVER[ PHP_SELF echo br echo $_SERVER[ SERVER_NAME echo br echo $_SERVER[ HTTP_HOST echo br echo $_SERVER[ HTTP_USER_AGENT echo br echo $_SERVER[ SCRIPT_NAME echo br ?
輸出:
在上面的代碼中,我們使用$ _SERVER元素來(lái)獲取一些信息。我們使用 PHP_SELF 元素獲取當(dāng)前處理的文件名,使用 SERVER_NAME 元素獲取當(dāng)前使用的服務(wù)器名稱(chēng),通過(guò) HTTP_HOST 獲取主機(jī)名。
$ _REQUEST
$ _REQUEST是一個(gè)超全局變量,用于在提交HTML表單后收集數(shù)據(jù)。$ _REQUEST主要不使用,因?yàn)? _POST和$ _GET執(zhí)行相同的任務(wù)并被廣泛使用。
注:$ _REQUEST可能導(dǎo)致安全風(fēng)險(xiǎn)。
下面我們就來(lái)看看如何使用$ _REQUEST:
!DOCTYPE html html head meta charset= UTF-8 /head body div >效果圖:
在上面的代碼中,我們創(chuàng)建了一個(gè)表單,該表單將用戶(hù)名作為輸入,并在單擊提交按鈕時(shí)輸出顯示其名稱(chēng)。我們使用action屬性中指定的$ _SERVER [ PHP_SELF ]元素將表單中接受的數(shù)據(jù)傳輸?shù)酵豁?yè)面,因?yàn)槲覀兪褂肞HP代碼操作同一頁(yè)面中的數(shù)據(jù)。使用$ _REQUEST超全局?jǐn)?shù)組變量檢索數(shù)據(jù)。
$ _POST
$ _POST是一個(gè)超級(jí)全局變量,用于在提交數(shù)據(jù)后從HTML表單收集數(shù)據(jù),當(dāng)用于傳輸數(shù)據(jù)的方法是“POST”時(shí)。
當(dāng)表單使用方法post傳輸數(shù)據(jù)時(shí),數(shù)據(jù)在查詢(xún)字符串中不可見(jiàn),即在此方法中保持安全級(jí)別。
下面我們就來(lái)看看如何使用$ _POST:
!DOCTYPE html html head meta charset= UTF-8 /head body div >在上面的代碼中,我們創(chuàng)建了一個(gè)表單,該表單接受用戶(hù)的名稱(chēng)和年齡,并在提交數(shù)據(jù)時(shí)使用$ _POST超級(jí)全局變量訪問(wèn)數(shù)據(jù)。
由于每個(gè)超全局變量都是一個(gè)數(shù)組,因此它可以存儲(chǔ)多個(gè)值。因此,我們從$ _POST變量中檢索名稱(chēng)和年齡,并將它們存儲(chǔ)在$ nm和$ age變量中。
效果圖:
$ _GET
$ _GET是一個(gè)超級(jí)全局變量,用于在提交數(shù)據(jù)后從HTML表單中收集數(shù)據(jù)。當(dāng)表單使用“GET”方法獲取傳輸數(shù)據(jù)時(shí),數(shù)據(jù)在查詢(xún)字符串中可見(jiàn),因此不隱藏值。$ _GET超級(jí)全局?jǐn)?shù)組變量存儲(chǔ)URL中的值。
下面我們就來(lái)看看如何使用$ _GET:
!DOCTYPE html html head title /title /head body bgcolor= cyan !--demonstration of $_GET-- h1 font color= red Historic Monument /font /h1 a href= picture.php?name=QutubMinar city=Delhi img src= qutubminar.jpg alt= Qutubminar height= 200 width= 200 / /a /body /html我們實(shí)際上只看到了一半的邏輯,讓我們理解上面的代碼,然后看看其余的邏輯。
在上面的代碼中,我們創(chuàng)建了一個(gè)QutubMinar的超鏈接圖像,它將把我們帶到picture.php頁(yè)面,并帶有參數(shù)名稱(chēng)=“QutubMinar”和city =“Delhi”。
也就是說(shuō),當(dāng)我們點(diǎn)擊QutubMinar的小圖片時(shí),我們將帶到下一頁(yè)picture.php以及參數(shù)。
由于默認(rèn)方法是get,因此這些參數(shù)將使用get方法傳遞到下一頁(yè),它們將在地址欄中顯示。
當(dāng)我們想要將值傳遞給地址時(shí),使用問(wèn)號(hào)(?)將它們附加到地址。
然后將參數(shù)寫(xiě)為問(wèn)號(hào)(?)后面的鍵值對(duì),如以下語(yǔ)句中所指定:
a href= picture.php?name=QutubMinar city=Delhi img src= qutubminar.jpg alt= Qutubminar height= 200 width= 200 / /a這里的參數(shù)name = QutubMinar會(huì)附加到地址。
如果我們想要添加更多值,我們可以在每個(gè)鍵值對(duì)之后使用&符號(hào)(&)添加它們,類(lèi)似于在name參數(shù)之后使用&符號(hào)添加city = Delhi。
現(xiàn)在,在點(diǎn)擊QutubMinar的圖像之后,我們希望顯示picture.php頁(yè)面,并顯示參數(shù)值。
所以讓我們?cè)趐icture.php頁(yè)面中為它編寫(xiě)代碼。
head title QutubMinar /title /head body bgcolor= cyan ?php $nm=$_GET[ name $city=$_GET[ city echo h1 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;this is .$nm. of .$city. /h1 br br img src= qutubminar.jpg alt= QutubMinar height= 400 width= 500 / /body /html在這里,我們使用超全局?jǐn)?shù)組變量$ _GET接收參數(shù)name和city的值,并分別存儲(chǔ)在變量$ nm和$ city中。
然后使用echo語(yǔ)句顯示它們。
QutubMinar的放大圖像如下所示。
首先讓我們看一下index.php頁(yè)面運(yùn)行時(shí)的輸出。
現(xiàn)在,當(dāng)我們點(diǎn)擊QutubMinar的超鏈接圖像時(shí),我們得到以下輸出:
$ _SESSION
$ _SESSION是一個(gè)預(yù)定義的超全局?jǐn)?shù)組變量,用于記住用戶(hù)的狀態(tài)以及他想要在整個(gè)會(huì)話(huà)中檢索的值。
以前,對(duì)服務(wù)器的每個(gè)請(qǐng)求都是單獨(dú)的請(qǐng)求。HTML是一種無(wú)狀態(tài)協(xié)議。這意味著它無(wú)法記住網(wǎng)站中用戶(hù)訪問(wèn)的頁(yè)面。但今天我們使用網(wǎng)站,用戶(hù)可以讓網(wǎng)站記住訪問(wèn)過(guò)的網(wǎng)頁(yè)或之前做過(guò)的事情,例如購(gòu)物網(wǎng)站。
會(huì)話(huà)(SESSION)的設(shè)計(jì)原因與此相同;會(huì)話(huà)可以記住用戶(hù)登錄到注銷(xiāo)期間的所有操作。
$ _SESSION數(shù)組變量用于存儲(chǔ)來(lái)自任何頁(yè)面的值,并在任何其他頁(yè)面中檢索它們,而不在URL中傳遞它們。
在存儲(chǔ)任何變量之前,使用session_start()聲明啟動(dòng)會(huì)話(huà)。
$ _COOKIE
$ _COOKIE是一個(gè)超級(jí)全局?jǐn)?shù)組變量,用于檢索cookie的值。
Cookie是由服務(wù)器創(chuàng)建的用于標(biāo)識(shí)用戶(hù)的小文件。每當(dāng)用戶(hù)在互聯(lián)網(wǎng)上請(qǐng)求某些信息時(shí),該請(qǐng)求就會(huì)發(fā)送到服務(wù)器。如果用戶(hù)第一次連接到該服務(wù)器,則服務(wù)器識(shí)別他的信息并創(chuàng)建具有給用戶(hù)的標(biāo)識(shí)號(hào)的小文件,并將其附加到發(fā)送給用戶(hù)的響應(yīng)并存儲(chǔ)在用戶(hù)的計(jì)算機(jī)中。
在此之后,每當(dāng)用戶(hù)向該服務(wù)器發(fā)送請(qǐng)求時(shí),它都攜帶cookie文件,由此服務(wù)器發(fā)送響應(yīng)而不再檢查服務(wù)器認(rèn)證。
$ _FILES
$ _FILES是一個(gè)超級(jí)全局?jǐn)?shù)組變量,用于將上載文件的信息提供給服務(wù)器。我們可以檢查上傳的文件是否已成功上傳;也可以使用$ _FILES變量檢索文件的詳細(xì)信息。
$ _ENV
$ _ENV有助于從Web服務(wù)器獲取/訪問(wèn)環(huán)境變量。
PHP中的環(huán)境變量是允許腳本從服務(wù)器動(dòng)態(tài)獲取某些信息的變量。它支持在不斷變化的服務(wù)器環(huán)境中的腳本靈活性。
使用$ _ENV訪問(wèn)任何環(huán)境變量的語(yǔ)法如下:
$_ENV[“variable_name”];例如,我們可以訪問(wèn)temp_pwd變量,如下所示:
?php echo “Temporary Password: ”.$_ENV[“temp_pwd”];?總結(jié):
在這些超級(jí)全局?jǐn)?shù)組變量中,變量$ _GET,$ _POST,$ _ SERVER,$ _SESSION被最多使用。$ _REQUEST變量可以執(zhí)行$ _GET,$ _POST和$ _COOKIE的工作,但需要避免使用它,因?yàn)樗赡軐?dǎo)致安全問(wèn)題。
以上就是本篇文章的全部?jī)?nèi)容,希望能對(duì)大家的學(xué)習(xí)有所幫助。更多精彩內(nèi)容大家可以關(guān)注php 相關(guān)教程欄目!!!
以上就是PHP中的超級(jí)全局變量是什么?如何使用?的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選