搜尋
首頁後端開發php教程PHP中的超級全域變數是什麼?如何使用?

PHP中的超級全域變數是什麼?如何使用?

Feb 13, 2019 pm 04:49 PM
php超級全域變數

在PHP中預先定義了一些數組變量,這些變量可以隨時在腳本中的任何位置訪問,它們被稱之為超級全域變量。這篇文章就來帶大家認識這些超級全域變量,簡單了解這些變數的用法,希望對大家有幫助。 【影片教學推薦:PHP教學

PHP中的超級全域變數是什麼?如何使用?

#什麼是超級全域(Superglobals)變數?

超級全域變數是PHP中內建的、特別定義的陣列變數。它們可以隨時在腳本中的任何位置使用超級全域變數來存取資訊。即,不管作用域是什麼,都可以輕鬆取得有關請求或其上下文的資訊。

超級全域變數可以從任何函數、類別或任何檔案訪問,而無需執行任何特殊任務,例如聲明任何全域變數等。它們主要用於儲存和獲取應用程式中從一個頁面到另一個頁面等的資訊。

以下是PHP中可用的超全域變數清單:

## ●   $ GLOBALS

 ●   $ _ SERVER

 ●  $ _REQUEST

 ●   $ _GET

 ●   $ _POST

 ●   $ _SESSION

 

 ●   $ _ENV

接下來我們來詳細介紹其中的一些超級全域變數。

$ GLOBALS

$ GLOBALS是一個超全局變量,它儲存腳本中聲明的所有變量,可用於存取腳本中任何位置的任何變數。 PHP將所有全域變數儲存在陣列$ GLOBALS []中,這個陣列有一個索引,用於保存全域變數名稱,可以使用該名稱來存取。

下面我們就來看看如何使用$ GLOBALS:

<?php 
$x = 300; 
$y = 200; 
  
function multiplication(){ 
    $GLOBALS[&#39;z&#39;] = $GLOBALS[&#39;x&#39;] * $GLOBALS[&#39;y&#39;]; 
} 
multiplication(); 
echo $z; 
?>

在上面的程式碼中,宣告了兩個全域變數$ x和$ y,並賦值300和200。然後定義函數multiplication()以將$ x和$ y值的相乘並儲存在GLOBAL陣列中定義的另一個變數$ z中。

我們知道變數$ x和$ y不會在函數multiplication()中被訪問,因為它們未在其中宣告;但我們可以透過使用$ GLOBALS數組變數來存取它來實現。

當呼叫函數square()時,就會執行變數$ x和$ y值的相乘;然後可以直接顯示。

所得的相乘結果,因為變數$z也存在於$ GLOBALS陣列變數中。

輸出:

PHP中的超級全域變數是什麼?如何使用?$ _SERVER

$ _SERVER是一個PHP超級全域變量,用於存儲有關標題(標頭),路徑和腳本位置的信息,即它存儲有關Web及其請求的信息。其中的一些元素用於從超全域變數$ _SERVER取得資訊。 $ _SERVER變數中使用了許多資訊元素。其中一些清單如下:

元件描述傳回目前正在執行的腳本的檔案名稱。  傳回主機伺服器的IP位址。    傳回主機伺服器的名稱。    如果透過查詢字串存取頁面,則傳回查詢字串。    傳回請求開始的時間戳記。    
$ _ SERVER [ 'PHP_SELF'] 
$ _ SERVER [ 'SERVER_ADDR']
$ _ SERVER [ 'SERVER_NAME']   
$ _ SERVER [ 'QUERY_STRING']  
$ _ SERVER [ 'REQUEST_TIME']  

下面我们就来看看如何使用$ _SERVER:

<?php 
echo $_SERVER[&#39;PHP_SELF&#39;]; 
echo "<br>"; 
echo $_SERVER[&#39;SERVER_NAME&#39;]; 
echo "<br>"; 
echo $_SERVER[&#39;HTTP_HOST&#39;]; 
echo "<br>"; 
echo $_SERVER[&#39;HTTP_USER_AGENT&#39;]; 
echo "<br>"; 
echo $_SERVER[&#39;SCRIPT_NAME&#39;]; 
echo "<br>"
?>

输出:

PHP中的超級全域變數是什麼?如何使用?

在上面的代码中,我们使用$ _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 class="demo">
<form method="post" action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>"> 
 用户名: <input type="text" name="fname"> 
 <button type="submit">提交</button> 
</form> 
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $name = htmlspecialchars($_REQUEST[&#39;fname&#39;]); 
    if(empty($name)){ 
        echo "用户名为空"; 
    } else { 
        echo "用户名为:".$name; 
    } 
} 
?> 
</div>  
</body>   
</html>

效果图:

PHP中的超級全域變數是什麼?如何使用?

在上面的代码中,我们创建了一个表单,该表单将用户名作为输入,并在单击提交按钮时输出显示其名称。我们使用action属性中指定的$ _SERVER ['PHP_SELF']元素将表单中接受的数据传输到同一页面,因为我们使用PHP代码操作同一页面中的数据。使用$ _REQUEST超全局数组变量检索数据。

$ _POST

$ _POST是一个超级全局变量,用于在提交数据后从HTML表单收集数据,当用于传输数据的方法是“POST”时。

当表单使用方法post传输数据时,数据在查询字符串中不可见,即在此方法中保持安全级别。

下面我们就来看看如何使用$ _POST:

<!DOCTYPE html>
<html> 
<head>
<meta charset="UTF-8">
   </head>
<body>   
<div class="demo">
<form method="post" action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>"> 
 <label for="name">用户名: </label> 
 <input name="name" type="text"><br> 
 <label for="age">年龄: </label> 
 <input name="age" type="number"><br> 
 <input type="submit" value="提交"> 
</form> 
<?php
$nm=$_POST[&#39;name&#39;]; 
$age=$_POST[&#39;age&#39;]; 
echo "<strong>姓名:".$nm.", ".$age."岁</strong>"; 
?> 
</div>  
</body>   
</html>

在上面的代码中,我们创建了一个表单,该表单接受用户的名称和年龄,并在提交数据时使用$ _POST超级全局变量访问数据。

由于每个超全局变量都是一个数组,因此它可以存储多个值。因此,我们从$ _POST变量中检索名称和年龄,并将它们存储在$ nm和$ age变量中。

效果图:

PHP中的超級全域變數是什麼?如何使用?

$ _GET

$ _GET是一个超级全局变量,用于在提交数据后从HTML表单中收集数据。当表单使用“GET”方法获取传输数据时,数据在查询字符串中可见,因此不隐藏值。$ _GET超级全局数组变量存储URL中的值。

下面我们就来看看如何使用$ _GET:

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body bgcolor="cyan">    
 <!--demonstration of $_GET-->
 <h1 id="font-nbsp-color-red-Historic-nbsp-Monument-font"><font color="red">Historic Monument</font></h1>
 <a href="picture.php?name=QutubMinar&city=Delhi"><img src="/static/imghwm/default1.png"  data-src="qutubminar.jpg"  class="lazy"   alt="Qutubminar"    style="max-width:90%"  style="max-width:90%"/></a>

</body>
</html>

我们实际上只看到了一半的逻辑,让我们理解上面的代码,然后看看其余的逻辑。

在上面的代码中,我们创建了一个QutubMinar的超链接图像,它将把我们带到picture.php页面,并带有参数名称=“QutubMinar”和city =“Delhi”。

也就是说,当我们点击QutubMinar的小图片时,我们将带到下一页picture.php以及参数。

由于默认方法是get,因此这些参数将使用get方法传递到下一页,它们将在地址栏中显示。

当我们想要将值传递给地址时,使用问号(?)将它们附加到地址。

然后将参数写为问号(?)后面的键值对,如以下语句中所指定:

<a href="picture.php?name=QutubMinar&city=Delhi"><img src="/static/imghwm/default1.png"  data-src="qutubminar.jpg"  class="lazy"   alt="Qutubminar"    style="max-width:90%"  style="max-width:90%"/></a>

这里的参数name = QutubMinar会附加到地址。

如果我们想要添加更多值,我们可以在每个键值对之后使用&符号(&)添加它们,类似于在name参数之后使用&符号添加city = Delhi。

现在,在点击QutubMinar的图像之后,我们希望显示picture.php页面,并显示参数值。

所以让我们在picture.php页面中为它编写代码。

<head>
<title>QutubMinar</title>
</head>
<body bgcolor="cyan">
 
 <?php
 $nm=$_GET[&#39;name&#39;];
 $city=$_GET[&#39;city&#39;];
 echo "<h1 id="nbsp-nbsp-nbsp-nbsp-nbsp-nbsp-nbsp-this-nbsp-is-nbsp-nm-nbsp-of-nbsp-city">       this is ".$nm." of ".$city."</h1><br><br>";
 
 ?>
 <img src="/static/imghwm/default1.png"  data-src="qutubminar.jpg"  class="lazy"   alt="QutubMinar"    style="max-width:90%"  style="max-width:90%"/>
 
</body>
</html>

在这里,我们使用超全局数组变量$ _GET接收参数name和city的值,并分别存储在变量$ nm和$ city中。

然后使用echo语句显示它们。

QutubMinar的放大图像如下所示。

首先让我们看一下index.php页面运行时的输出。

PHP中的超級全域變數是什麼?如何使用?

现在,当我们点击QutubMinar的超链接图像时,我们得到以下输出:

PHP中的超級全域變數是什麼?如何使用?

$ _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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP的目的:構建動態網站PHP的目的:構建動態網站Apr 15, 2025 am 12:18 AM

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP:處理數據庫和服務器端邏輯PHP:處理數據庫和服務器端邏輯Apr 15, 2025 am 12:15 AM

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

您如何防止PHP中的SQL注入? (準備的陳述,PDO)您如何防止PHP中的SQL注入? (準備的陳述,PDO)Apr 15, 2025 am 12:15 AM

在PHP中使用預處理語句和PDO可以有效防範SQL注入攻擊。 1)使用PDO連接數據庫並設置錯誤模式。 2)通過prepare方法創建預處理語句,使用佔位符和execute方法傳遞數據。 3)處理查詢結果並確保代碼的安全性和性能。

PHP和Python:代碼示例和比較PHP和Python:代碼示例和比較Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP行動:現實世界中的示例和應用程序PHP行動:現實世界中的示例和應用程序Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:輕鬆創建交互式Web內容PHP:輕鬆創建交互式Web內容Apr 14, 2025 am 12:15 AM

PHP可以輕鬆創建互動網頁內容。 1)通過嵌入HTML動態生成內容,根據用戶輸入或數據庫數據實時展示。 2)處理表單提交並生成動態輸出,確保使用htmlspecialchars防XSS。 3)結合MySQL創建用戶註冊系統,使用password_hash和預處理語句增強安全性。掌握這些技巧將提升Web開發效率。

PHP和Python:比較兩種流行的編程語言PHP和Python:比較兩種流行的編程語言Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP的持久相關性:它還活著嗎?PHP的持久相關性:它還活著嗎?Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能