介紹如何使用 PHP 讀取以 POST 方法傳送的網頁表單資料。
POST 網頁表單
以下是簡單的網頁表單,若要採用 POST 方法來傳遞資料,可在 <form> 中加上 method="post",而傳送的目的網址則可用 action 指定:
<!DOCTYPE html>
<html>
<head>
<title>POST</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<h2>測試表單</h2>
<form method="post" action="action.php">
<input type="text" name="username" placeholder="Enter Username" />
<input type="password" name="password" placeholder="Enter Password" />
<input type="submit" name="submit-btn" value="submit" />
</form>
</body>
</html>
這張表單在按下 submit 按鈕之後,會以 POST 的方式將資料送至 action.php。
PHP 接收 POST 資料
在 PHP 中我們可以透過 $_POST 變數來取得以 POST 方式所傳送的資料,典型的用來接收 POST 表單資料的 action.php 內容如下:
<?php
if (isset($_POST["submit-btn"])) {
# 依欄位名稱取得資料
print("<div>Username:" . $_POST['username'] . "</div>");
print("<div>Password:" . $_POST['password'] . "</div>");
# 輸出所有欄位資料(除錯用)
echo "<pre>";
print_r($_POST);
echo "</pre>";
}
?>
收到 POST 表單資料之後,輸出會類似這樣:
Username:abc
Password:1234
Array
(
[username] => abc
[password] => 1234
[submit-btn] => submit
)這裡的 print_r 函數會將 $_POST 陣列的所有內容列出,在開發與除錯階段非常好用,而除了 print_r 函數之外,亦可使用 var_dump 函數。
PHP 讀取輸入串流資料
除了以常用的 $_POST 變數取得 POST 表單資料之外,亦可透過 PHP 的 php://input 這個輸入的串流來取得原始的資料:
<?php
if (isset($_POST["submit-btn"])) {
# 從 PHP 輸入串流讀取原始資料
$post_data = file_get_contents('php://input');
echo "<div>" . $post_data . "</div>";
}
?>
從 PHP 的 php://input 輸入串流取得的資料會類似這樣:
username=abc&password=1234&submit-btn=submit
