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
是內建變數,在整個指令碼中都是有效的。