PHP - 超級全域變數 (`$_GET`, `$_POST`, `$_SESSION`)
課程簡介
超級全域變數是 PHP 提供的一組內建陣列,用於在伺服器端處理來自用戶的數據或伺服器相關的資訊。本課程將聚焦於 $_GET
、$_POST
和 $_SESSION
,探討其功能與使用場景。
超級全域變數簡介
1. $_GET
- 用於獲取通過 URL 傳遞的參數。
- 資料會附加在 URL 後,適合用於讀取數據(例如查詢)。
範例:
URL: http://example.com/index.php?name=Alice&age=25
1
2
3
4
5
6
<?php
$name = $_GET["name"];
$age = $_GET["age"];
echo "姓名:$name<br>";
echo "年齡:$age";
?>
2. $_POST
- 用於獲取通過表單提交的數據,尤其是隱私數據或大數據量。
- 數據不會顯示在 URL 上,適合用於數據提交(例如註冊、登入)。
範例:
HTML 表單:
1
2
3
4
5
6
7
<form action="process.php" method="post">
<label for="name">姓名:</label>
<input type="text" id="name" name="name">
<label for="age">年齡:</label>
<input type="number" id="age" name="age">
<button type="submit">提交</button>
</form>
PHP 處理:
1
2
3
4
5
6
<?php
$name = $_POST["name"];
$age = $_POST["age"];
echo "姓名:$name<br>";
echo "年齡:$age";
?>
3. $_SESSION
- 用於在伺服器端儲存用戶的會話數據,數據在多個頁面之間共享。
- 需要啟用會話處理,並且會話數據保存在伺服器端而非用戶端。
開始會話
使用 session_start()
開啟或恢復會話。
範例:
1
2
3
4
5
<?php
session_start();
$_SESSION["username"] = "Alice";
echo "用戶名已儲存於會話中。";
?>
獲取會話數據
在其他頁面中可以讀取儲存的會話數據。
1
2
3
4
<?php
session_start();
echo "用戶名為:" . $_SESSION["username"];
?>
刪除會話數據
- 刪除某個變數:
unset($_SESSION["username"]);
- 刪除所有會話數據:
1 2
session_unset(); session_destroy();
三者比較
特性 | $_GET | $_POST | $_SESSION |
---|---|---|---|
傳遞方式 | URL(可見) | HTTP 請求主體(隱藏) | 儲存在伺服器端 |
數據大小限制 | 通常限制為 2000 字符左右(瀏覽器) | 理論上無限制(伺服器設定影響) | 取決於伺服器存儲空間 |
使用場景 | 查詢參數、分享 URL | 提交數據(登入、註冊等) | 儲存用戶會話數據 |
安全性 | 易被修改,不適合處理敏感數據 | 較安全,但需防範 CSRF 攻擊 | 較安全,但需妥善管理會話 |
教學練習
練習 1:使用 $_GET
傳遞數據
設計一個網頁,透過 URL 傳遞兩個數字,並計算它們的總和。
練習 2:使用 $_POST
接收表單數據
建立一個登入表單,包含「用戶名」與「密碼」欄位,提交後顯示歡迎訊息。
練習 3:使用 $_SESSION
儲存會話數據
建立一個頁面,儲存用戶名到 $_SESSION
,並在另一個頁面顯示該用戶名。
教學重點
- 理解
$_GET
、$_POST
和$_SESSION
的特性與使用場景。 - 熟悉資料的傳遞與獲取,並掌握伺服器端的數據管理。
- 強調安全性,避免資料洩露或不當使用。
是否需要進一步講解其他超級全域變數(如 $_FILES
或 $_COOKIE
)?
本文章以 CC BY 4.0 授權