PHP 超級全域性變數

Galois發表於2020-01-14

超級全域性變數在PHP 4.1.0之後被啟用, 是PHP系統中自帶的變數,在一個指令碼的全部作用域中都可用。

PHP 中預定義了幾個超級全域性變數(superglobals),他們在一個指令碼的全部作用於中都可用。(總之都是一堆變數名為大寫的變數)

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

PHP 超級全域性變數

先理清前四個,$_FILES,$_ENV,$_COOKIE,$_SESSION 暫不展開討論。

$GLOBALS

$GLOBALS 是PHP的一個超級全域性變數組,在一個 PHP 指令碼的全部作用域中都可以訪問。

$GLOBALS 是一個包含了全部變數的全域性組合陣列。變數的名字就是陣列的鍵。

<?php 
$x = 25; 
$y = 256;

function addition() 
{ 
    $GLOBALS['z'] = $GLOBALS['x'] * $GLOBALS['y']; 
}

addition(); 
echo $z; 

$_SERVER

$SERVER是一個包含了諸如頭資訊(header)、路徑(path)、以及指令碼位置(script locations)等等資訊的陣列。這個陣列中的專案由 Web 伺服器建立。不能保證每個伺服器都提供全部專案;伺服器可能會忽略一些。

<?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 的資料。

$_REQUEST

$_REQUEST 用於收集HTML表單提交的資料。
如下例項顯示了一個輸入欄位input及提交按鈕submit的表單form。 當使用者透過點選 "Submit" 按鈕提交表單資料時, 表單資料將傳送至 <form> 標籤中action屬性中指定的指令碼檔案。 在這個例項中,我們指定檔案來處理表單資料。如果你希望其他的PHP檔案來處理該資料,你可以修改該指定的指令碼檔名。 然後,我們可以使用超級全域性變數 $_REQUEST 來收集表單中的input欄位資料:

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

<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>
</body>
</html>

$_POST

$POST被廣泛用於收集表單資料,在 HTMLform標籤指定該屬性:"method" = "post"。

如下例項顯示了一個輸入欄位input及提交按鈕submit的表單form。 當使用者透過點選 "Submit" 按鈕提交表單資料時, 表單資料將傳送至

標籤中action屬性中指定的指令碼檔案。 在這個例項中,我們指定檔案來處理表單資料。如果你希望其他的PHP檔案來處理該資料,你可以修改該指定的指令碼檔名。 然後,我們可以使用超級全域性變數$_POST來收集表單中的input欄位資料:

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

<?php 
$name = $_POST['fname']; 
echo $name; 
?>
</body>
</html>

$_GET

PHP $_GET 同樣被廣泛應用於收集表單資料,在HTMLform標籤的指定該屬性:"method="get"。
$_GET 也可以收集URL中傳送的資料。

<html>
<body>
<a href="test_get.php?subject=PHP&web=learnku.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'] . " @ " . $_GET['web'];
?>
</body>
</html>
本作品採用《CC 協議》,轉載必須註明作者和本文連結
不要試圖用百米衝刺的方法完成馬拉松比賽。

相關文章