PHP GET 和 POST

在本教程中,你將學習如何使用 HTTP GET 和 POST 方法向伺服器傳送資訊,並使用 PHP 檢索它們。

向伺服器傳送資訊的方法

Web 瀏覽器通常使用兩種 HTTP(超文字傳輸​​協議)方法之一(GET 和 POST)與伺服器通訊。兩種方法都以不同方式傳遞資訊,並具有不同的優點和缺點,如下所述。

GET 方法

在 GET 方法中,資料作為 URL 引數傳送,這些引數通常是由&符號(&) 分隔的名稱和值對的字串。通常,具有 GET 資料的 URL 將如下所示:

URL 中的粗體部分是 GET 引數,斜體部分是這些引數的值。大於一個的 parameter=value 引數可通過 & 符號級聯被嵌入 URL。人們只能通過 GET 方法傳送簡單的文字資料。

使用 GET 方法的優點和缺點

  • 由於 GET 方法傳送的資料顯示在 URL 中,因此可以使用特定查詢字串值為頁面新增書籤。
  • GET 方法不適合傳遞使用者名稱和密碼等敏感資訊,因為這些資訊在 URL 查詢字串中完全可見,並且可能作為訪問頁儲存在客戶端瀏覽器的記憶體中。
  • 由於 GET 方法將資料分配給伺服器環境變數,因此 URL 的長度是有限的。因此,要傳送的總資料存在限制。

PHP 提供了超全域性變數 $_GET 來訪問通過 URL 傳送的所有資訊或使用 method="get" 通過 HTML 表單提交資訊。

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Example of PHP GET method</title>
</head>
<body>
<?php
if(isset($_GET["name"])){
    echo "<p>Hi, " . $_GET["name"] . "</p>";
}
?>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="Submit">
</form>
</body>

POST 方法

在 POST 方法中,資料作為包在與處理指令碼的單獨通訊中傳送到伺服器。通過 POST 方法傳送的資料在 URL 中不可見。

使用 POST 方法的優點和缺點

  • 它比 GET 更安全,因為使用者輸入的資訊在 URL 查詢字串或伺服器日誌中永遠不可見。
  • 可以傳遞的資料量有一個更大的限制,一個人可以使用 POST 傳送文字資料和二進位制資料(上傳檔案)。
  • 由於 POST 方法傳送的資料在 URL 中不可見,因此無法使用特定查詢為頁面新增書籤。

就像 $_GET ,PHP 提供另一個超全域性變數 $_POST 來訪問通過 post 方法傳送的所有資訊或通過 method="post" 提交 HTML 表單。

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Example of PHP POST method</title>
</head>
<body>
<?php
if(isset($_POST["name"])){
    echo "<p>Hi, " . $_POST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="Submit">
</form>
</body>

$_REQUEST 變數

PHP 提供了另一個超全域性變數 $_REQUEST ,它包含變數 $_GET$_POST 變數的值以及 $_COOKIE 超全域性變數的值。

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Example of PHP $_REQUEST variable</title>
</head>
<body>
<?php
if(isset($_REQUEST["name"])){
    echo "<p>Hi, " . $_REQUEST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="Submit">
</form>
</body>

你將在高階部分中瞭解有關 PHP cookie表單處理的更多資訊。

注: 超全域性變數 $_GET$_POST 並且 $_REQUEST 是內建變數,在整個指令碼中都是有效的。