3.3 · PHP 基礎
目標: 讀寫基本 PHP。2026 DSE 起,PHP 是卷 2B 的服務器端語言。
文件結構
PHP 文件像嵌入 <?php … ?> 標籤的 HTML:
php
<!DOCTYPE html>
<html>
<body>
<h1>Hello, <?= htmlspecialchars($name ?? "guest") ?>!</h1>
</body>
</html>1
2
3
4
5
6
2
3
4
5
6
Web 伺服器的 PHP 模組在送 HTML 給瀏覽器前解析 <?php ?> 裏的所有內容。
變數與基本類型
php
<?php
$name = "Alice";
$age = 17;
$score = 86.5;
$ok = true;
echo $name; // Alice
echo "$name is $age"; // Alice is 17 (雙引號內插值)
echo "$name is " . $age; // 同上用拼接
?>1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
數組
php
<?php
$fruits = ["apple", "banana", "cherry"];
echo $fruits[0]; // apple
echo count($fruits); // 3
$student = ["id" => 1001, "name" => "Alice", "score" => 86];
echo $student["name"]; // Alice
foreach ($fruits as $f) {
echo $f, "\n";
}
?>1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
控制結構
與多數語言相同 —— if、elseif、else、switch、for、while、foreach。
php
<?php
if ($score >= 80) echo "A";
elseif ($score >= 70) echo "B";
elseif ($score >= 60) echo "C";
else echo "F";
?>1
2
3
4
5
6
2
3
4
5
6
函式
php
<?php
function add($a, $b) {
return $a + $b;
}
echo add(2, 3); // 5
?>1
2
3
4
5
6
7
2
3
4
5
6
7
接收表單資料
php
<?php
$name = $_POST["name"] ?? ""; // 來自 POST 表單
$id = $_GET["id"] ?? 0; // 來自 URL 查詢串
$cookie= $_COOKIE["last_visit"] ?? null;
?>1
2
3
4
5
2
3
4
5
$_POST、$_GET、$_COOKIE、$_SESSION、$_FILES、$_REQUEST、$_SERVER 是超全局。
安全輸出
絕不要 echo 原始用户輸入 —— 用 htmlspecialchars() 防 XSS:
php
<?php
echo "<p>Welcome, " . htmlspecialchars($name) . "</p>";
// 或短語法:
?>
<p>Welcome, <?= htmlspecialchars($name) ?></p>1
2
3
4
5
2
3
4
5
include / require 其他文件
php
<?php
require_once "db.php"; // 缺失致命錯
include "header.html"; // 缺失警告
?>1
2
3
4
2
3
4
常見模式:跨頁共享的 header.php 與 footer.php。
實例 · 帶表單的 Hello
php
<?php
$name = $_POST["name"] ?? "";
?>
<!DOCTYPE html>
<html>
<body>
<form method="POST">
Your name: <input name="name" required>
<button>Greet</button>
</form>
<?php if ($name !== ""): ?>
<p>Hello, <?= htmlspecialchars($name) ?>!</p>
<?php endif; ?>
</body>
</html>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
學生常見錯誤
- 忘
<?php開標籤 → 代碼顯示為文本。 - echo 原始用户輸入 → XSS。
- 把資料庫憑證硬編碼到提交的程式碼裏。
- 用過時
mysql_*函式而不是PDO或mysqli_*。
考試式題目
題(5 分): 寫 PHP 頁:從
GET查詢參數n收一數字並列印它是奇是偶。n缺或非數字則列印「Invalid input」。
參考答案:
php
<?php
$raw = $_GET["n"] ?? "";
if (!is_numeric($raw)) {
echo "Invalid input";
} else {
$n = (int)$raw;
echo "$n is " . ($n % 2 === 0 ? "even" : "odd");
}
?>1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
關鍵要點
- PHP 在送 HTML 前在服務器跑。
- 超全局:
$_POST、$_GET、$_COOKIE、$_SESSION。 - 總把用户輸入在輸出時轉義。
➡️ 下一節:3.4 表單處理與校驗