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