PHP 全域變數 - 超全域變數

巴扎黑
發布: 2016-11-12 09:45:25
原創
1040 人瀏覽過

PHP 全域變數 - 超全域變數

PHP 中的許多預定義變數都是“超全域的”,這意味著它們在一個腳本的全部作用域中都可用。在函數或方法中無需執行 global $variable; 就可以存取它們。

這些超全域變數是:

$GLOBALS

$_SERVER

$_REQUEST

$_POST

$_GET

_SESSION

本節會介紹一些超全域變量,並會在稍後的章節中講解其他的超全域變數。

$GLOBALS — 引用全域作用域中可用的全部變數

$GLOBALS 這種全域變數用於在 PHP 腳本中的任意位置存取全域變數(從函數或方法中均可)。

PHP 在名為 $GLOBALS[index] 的陣列中儲存了所有全域變數。變數的名字就是數組的鍵。

下面的例子展示瞭如何使用超級全域變數$GLOBALS:

實例

<?php 
$x = 75; 
$y = 25;
 
function addition() { 
  $GLOBALS[&#39;z&#39;] = $GLOBALS[&#39;x&#39;] + $GLOBALS[&#39;y&#39;]; 
}
 
addition(); 
echo $z; 
?>
登入後複製

運行實例

在上面的例子中,由於z 是$GLOBALS 數組中的變量,因此在函數之外也可以訪問它。

PHP $_SERVER

$_SERVER 這個超全域變數會保存關於報頭、路徑和腳本位置的資訊。

下面的範例展示如何使用$_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_REFERER&#39;];
echo "<br>";
echo $_SERVER[&#39;HTTP_USER_AGENT&#39;];
echo "<br>";
echo $_SERVER[&#39;SCRIPT_NAME&#39;];
?>
登入後複製

運行實例

下表列出了您能夠在$_SERVER 中訪問的最重要的元素:

元素/代碼描述

$_SERVER['PHP_SELF'] 傳回目前執行腳本的檔案名稱。

$_SERVER['GATEWAY_INTERFACE'] 傳回伺服器所使用的 CGI 規範的版本。

$_SERVER['SERVER_ADDR'] 傳回目前執行腳本所在的伺服器的 IP 位址。

$_SERVER['SERVER_NAME'] 傳回目前執行腳本所在的伺服器的主機名稱(例如 www.w3school.com.cn)。

$_SERVER['SERVER_SOFTWARE'] 傳回伺服器識別字串(如 Apache/2.2.24)。

$_SERVER['SERVER_PROTOCOL'] 傳回請求頁面時通訊協定的名稱和版本(例如,「HTTP/1.0」)。

$_SERVER['REQUEST_METHOD'] 傳回存取頁面所使用的請求方法(例如 POST)。

$_SERVER['REQUEST_TIME'] 傳回請求開始時的時間戳記(例如 1577687494)。

$_SERVER['QUERY_STRING'] 傳回查詢字串,如果是透過查詢字串存取此頁面。

$_SERVER['HTTP_ACCEPT'] 傳回來自目前要求的請求頭。

$_SERVER['HTTP_ACCEPT_CHARSET'] 傳回來自目前要求的 Accept_Charset 頭( 例如 utf-8,ISO-8859-1)

$_SERVER['HTTP_HOST'] 傳回來自目前請求的 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'] 該值指明了 Apache 伺服器設定檔中的 SERVER_ADMIN 參數。

$_SERVER['SERVER_PORT'] Web 伺服器使用的連接埠。預設值為 “80”。

$_SERVER['SERVER_SIGNATURE'] 傳回伺服器版本和虛擬主機名稱。

$_SERVER['PATH_TRANSLATED'] 目前腳本所在檔案系統(非文檔根目錄)的基本路徑。

$_SERVER['SCRIPT_NAME'] 傳回目前腳本的路徑。

$_SERVER['SCRIPT_URI'] 傳回目前頁面的 URI。

PHP $_REQUEST

PHP $_REQUEST 用來收集 HTML 表單提交的資料。

下面的範例展示了一個包含輸入欄位及提交按鈕的表單。當使用者透過點擊提交按鈕來提交表單資料時, 表單資料將發送到
標籤的 action 屬性中指定的腳本檔案。在這個例子中,我們指定文件本身來處理表單資料。如果您需要使用其他的 PHP 檔案來處理表單數據,請修改為您選擇的檔案名稱即可。然後,我們可以使用超級全域變數$_REQUEST 來收集input 欄位的值:

實例

<html>
<body>
<form method="post" action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php 
$name = $_REQUEST[&#39;fname&#39;]; 
echo $name; 
?>
</body>
</html>
登入後複製

運行實例

PHP $_POST

PHP $_POST 廣泛用於收集提交method="post" 的HTML 表單後的表單資料。 $_POST 也常用於傳遞變數。

下面的範例展示了一個包含輸入欄位和提交按鈕的表單。當使用者點擊提交按鈕來提交資料後,表單資料會傳送到 標籤的 action 屬性中指定的檔案。在本例中,我們指定文件本身來處理表單資料。如果您希望使用另一個 PHP 頁面來處理表單數據,請使用變更為您選擇的檔案名稱。然後,我們可以使用超全域變數 $_POST 來收集輸入欄位的值:

實例

<html>
<body>
<form method="post" action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php 
$name = $_POST[&#39;fname&#39;]; 
echo $name; 
?>
</body>
</html>
登入後複製

運行實例

PHP $_GET

PHP $_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。

$_GET 也可以收集 URL 中的发送的数据。

假设我们有一张页面含有带参数的超链接:

<html>
<body>
<a href="test_get.php?subject=PHP&web=W3school.com.cn">测试 $GET</a>
</body>
</html>
登入後複製

当用户点击链接 "Test $GET",参数 "subject" 和 "web" 被发送到 "test_get.php",然后您就能够通过 $_GET 在 "test_get.php" 中访问这些值了。

下面的例子是 "test_get.php" 中的代码:

实例

<html>
<body>
<?php 
echo "Study " . $_GET[&#39;subject&#39;] . " at " . $_GET[&#39;web&#39;];
?>
</body>
</html>
登入後複製


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!