PHP - 表單處理
課程簡介
表單處理是 PHP 網頁開發中非常重要的一環,用於接收和處理用戶輸入的數據。本課程將介紹如何建立 HTML 表單,使用 PHP 獲取數據,並實現數據驗證與安全性措施。
表單處理基本概念
1. 表單結構
使用 HTML 表單標籤定義用戶輸入界面。
範例:
1
2
3
4
5
6
7
8
9
<form action="process.php" method="post">
<label for="name">姓名:</label>
<input type="text" id="name" name="name">
<br>
<label for="email">電子郵件:</label>
<input type="email" id="email" name="email">
<br>
<button type="submit">送出</button>
</form>
action
:指定提交表單數據的伺服器端腳本。method
:GET
或POST
,用於選擇數據提交方式。
2. 獲取表單數據
使用 $_POST
當表單使用 POST
方法提交時,數據會存放在全域陣列 $_POST
中。
範例:
1
2
3
4
5
6
7
8
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST["name"];
$email = $_POST["email"];
echo "姓名:$name<br>";
echo "電子郵件:$email";
}
?>
使用 $_GET
當表單使用 GET
方法提交時,數據會存放在 $_GET
中。
範例:
1
2
3
4
5
6
7
8
<?php
if ($_SERVER["REQUEST_METHOD"] == "GET") {
$name = $_GET["name"];
$email = $_GET["email"];
echo "姓名:$name<br>";
echo "電子郵件:$email";
}
?>
3. 簡單表單驗證
在伺服器端對表單數據進行驗證,避免不合法輸入。
範例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = trim($_POST["name"]);
$email = trim($_POST["email"]);
if (empty($name)) {
echo "姓名不可為空<br>";
} else {
echo "姓名:$name<br>";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "電子郵件格式不正確<br>";
} else {
echo "電子郵件:$email";
}
}
?>
4. 表單的安全性
防止 XSS(跨站腳本攻擊)
對用戶輸入進行編碼處理,避免惡意代碼被執行。
範例:
1
2
3
4
5
6
<?php
$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);
echo "姓名:$name<br>";
echo "電子郵件:$email";
?>
防止 CSRF(跨站請求偽造)
使用 CSRF Token 確保表單請求的合法性。
範例:
- 在表單中加入隱藏的 CSRF Token:
1 2 3 4 5 6 7 8 9
<?php session_start(); $token = bin2hex(random_bytes(32)); $_SESSION["csrf_token"] = $token; ?> <form action="process.php" method="post"> <input type="hidden" name="csrf_token" value="<?php echo $token; ?>"> <!-- 其他表單欄位 --> </form>
- 在伺服器端驗證 Token:
1 2 3 4 5 6
<?php session_start(); if ($_POST["csrf_token"] !== $_SESSION["csrf_token"]) { die("CSRF 驗證失敗!"); } ?>
教學練習
練習 1:建立簡單表單並回顯輸入數據
建立一個表單,包含「姓名」與「年齡」兩個欄位,提交後顯示輸入的值。
練習 2:表單驗證
擴展上述表單,加入以下驗證:
- 姓名不可為空。
- 年齡必須為數字且在 1 到 120 之間。
練習 3:安全性處理
為上述表單加入 XSS 防護與 CSRF 驗證。
教學重點
- 掌握如何使用
$_POST
和$_GET
獲取表單數據。 - 熟悉基本表單驗證技巧,確保數據的合法性。
- 理解 XSS 和 CSRF 攻擊的原理,並學會應對措施。
本文章以 CC BY 4.0 授權