最新的Web開發教程
 

PHP 5全局變量 - 超全局


超級全局在PHP 4.1.0版本引入,並內置變量,它們總是在所有的範圍內有效。


PHP全局變量 - 超全局

在PHP中的幾個預定義變量"superglobals" ,這意味著它們始終可以訪問,無論範圍-你可以從任何函數,類或文件的訪問,而不必做任何特殊。

PHP的全局變量是:

  • $ GLOBALS
  • $ _ SERVER
  • $ _REQUEST
  • $ _ POST
  • $ _GET
  • $ _FILES
  • $ _ENV
  • $ _COOKIE
  • $ _SESSION

本章將介紹一些超全局,其餘的將在後面的章節來解釋。


PHP $ GLOBALS

$ GLOBALS是用於從任何位置訪問在PHP腳本全局變量(也從函數或方法中)一個PHP超全局變量。

PHP店在名為$ GLOBALS [陣列中的所有全局變量index 。 該指數保持可變的名稱。

下面的例子演示了如何使用超級全局變量$ GLOBALS:

<?php
$x = 75;
$y = 25;
 
function addition() {
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
 
addition();
echo $z;
?>
運行示例»

在上面的例子中,由於z是變量存在於$ GLOBALS陣列內,這也是來自功能外部接近!


PHP $ _ SERVER

$ _ SERVER是一個PHP超全局變量持有約標題,路徑和腳本位置的信息。

下面的例子演示了如何使用某些$ _SERVER元素:

<?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'];
?>
運行示例»

下表列出了可以去裡面$ _SERVER中最重要的元素:

元/碼 描述
$ _ SERVER ['PHP_SELF'] 返回當前正在執行腳本的文件名
$ _ SERVER ['GATEWAY_INTERFACE'] 返回通用網關接口的版本(CGI)服務器使用
$ _ SERVER ['SERVER_ADDR'] 返回主服務器的IP地址
$ _ SERVER ['SERVER_NAME'] 返回主服務器的名稱(such as www.w3ii.com)
$ _ SERVER ['SERVER_SOFTWARE'] 返回服務器標識字符串(such as Apache/2.2.24)
$ _ SERVER ['SERVER_PROTOCOL'] 返回的名稱和版本信息協議(such as HTTP/1.1)
$ _ SERVER ['REQUEST_METHOD'] 返回用於訪問該頁面的請求方法(such as POST)
$ _ SERVER ['REQUEST_TIME'] 返回請求的開始的時間戳(such as 1377687496)
$ _ SERVER ['QUERY_STRING'] 返回查詢字符串,如果該頁面通過查詢字符串訪問
$ _ SERVER ['HTTP_ACCEPT'] 返回當前請求的Accept報頭
$ _ SERVER ['HTTP_ACCEPT_CHARSET'] 返回Accept_Charset頭從當前請求(例如UTF-8,ISO-8859-1)
$ _ SERVER ['HTTP_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'] 返回給Web服務器配置文件中的指令SERVER_ADMIN值(如果你的腳本在虛擬主機上運行,這將是該虛擬主機定義的值) (such as [email protected])
$ _ SERVER ['SERVER_PORT'] 返回正在使用的web服務器進行通信的服務器計算機上的端口(such as 80)
$ _ SERVER ['SERVER_SIGNATURE'] 返回其添加到服務器生成的網頁服務器版本和虛擬主機名
$ _ SERVER ['PATH_TRANSLATED'] 返回到當前腳本的基於文件系統的路徑
$ _ SERVER ['SCRIPT_NAME'] 返回當前腳本的路徑
$ _ SERVER ['SCRIPT_URI'] 返回當前頁面的URI

PHP $ _REQUEST

PHP $ _REQUEST是用來提交HTML表單後收集數據。

下面的例子示出了具有輸入字段和提交按鈕的形式。 當用戶通過點擊提交數據"Submit" ,則表格數據被發送到在指定的文件action的屬性<form>標記。 在這個例子中,我們指出這個文件本身進行處理表單數據。 如果您想使用其他PHP文件來處理表單數據,替換與您所選擇的文件名。 然後,我們就可以使用超級全局變量$ _REQUEST收集輸入字段的值:

<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // collect value of input field
    $name = $_REQUEST['fname'];
    if (empty($name)) {
        echo "Name is empty";
    } else {
        echo $name;
    }
}
?>

</body>
</html>
運行示例»

PHP $ _ POST

PHP $ _ POST被廣泛使用的方法=“郵報”提交HTML表單後,收集表單數據。 $ _ POST還廣泛用於傳遞變量。

下面的例子示出了具有輸入字段和提交按鈕的形式。 當用戶通過點擊提交數據"Submit" ,則表格數據被發送到在指定的文件action的屬性<form>標記。 在這個例子中,我們指向文件本身進行處理表單數據。 如果您想使用其他PHP文件來處理表單數據,替換與您所選擇的文件名。 然後,我們就可以使用超級全局變量$ _ POST收集輸入字段的值:

<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // collect value of input field
    $name = $_POST['fname'];
    if (empty($name)) {
        echo "Name is empty";
    } else {
        echo $name;
    }
}
?>

</body>
</html>
運行示例»

PHP $ _GET

PHP $ _GET也可以使用方法=“獲得”提交HTML表單後,收集表單數據。

$ _GET還可以收集在URL發送的數據。

假設我們有一個包含帶有參數的超鏈接的HTML頁面:

<html>
<body>

<a href="test_get.php?subject=PHP&web=w3ii.com">Test $GET</a>

</body>
</html>

當用戶點擊該鏈接"Test $GET"參數"subject""web"發送到"test_get.php"然後就可以訪問他們的價值觀"test_get.php"與$ _GET。

下面的例子示出了在代碼"test_get.php"

<html>
<body>

<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>

</body>
</html>
運行示例»

提示:您將了解更多關於$ _ POST和$ _GET在PHP形式的篇章。