本文整理 PHP 基礎知識體系:執行方式、語法標記、註解規範、變量機制、資料傳遞與表單處理,適合初學者建立完整心智模型。
$_SERVER、$_GET、$_POST 等超全局變量。php script.php,無 Web 伺服器參與,適合排程任務、遷移腳本、守護進程。輸入輸出對應 STDIN/STDOUT/STDERR。<?php
// PHP 程式碼
?>
<?php ?> 兼容性最好,建議永遠使用。<? ?>、<%= %> 需開啟 short_open_tag,不推薦。| 類型 | 語法 | 適用場景 |
|---|---|---|
| 單行 | // 註解 或 # 註解 | 行內說明、暫時停用代碼 |
| 多行 | /* 註解內容 */ | 區塊說明、大段代碼暫停 |
| 文檔註解 | /** 文檔 */ | 類/方法/屬性標準文檔,支援 phpDocumentor、IDE 智能提示 |
文檔註解範例:
/**
* 求和函數
* @param int $p1 被加數
* @param int $p2 加數
* @return int 兩數之和
*/
function sum($p1, $p2) {
return $p1 + $p2;
}
陷阱:HTML 註解 <!-- --> 內的 PHP 代碼仍會執行,只是輸出被瀏覽器隱藏。切勿用 HTML 註解「停用」PHP 邏輯。
$ 開頭,區分大小寫:$name ≠ $Name。$ 不是變量名一部分,僅為識別符。$func() 呼叫變量函數,func() 呼叫普通函數。$a = 10;
$b = $a; // 值傳遞:複製值空間,$b 獨立
$c = &$a; // 參考傳遞:複製引用空間,$c 與 $a 指向同一值空間
$c = 20; // $a 也變為 20
var_dump($var):輸出類型與值,除錯必備。unset($var):刪除變量名與引用,值空間由 GC 回收(引用計數歸零時)。isset() / empty():檢查變量是否存在且非空值。| 特性 | GET | POST |
|---|---|---|
| 資料位置 | URL 查詢字串 | HTTP 請求主體 |
| 長度限制 | 瀏覽器/伺服器限制 (~2KB-8KB) | 受 post_max_size 限制 (預設 8MB) |
| 可見性 | 網址列明文可見 | 不直接顯示於網址 |
| 適用場景 | 查詢、分頁、可分享連結 | 表單提交、檔案上傳、敏感資料 |
| PHP 存取 | $_GET | $_POST |
$_REQUEST 合併陣列包含 $_GET、$_POST、$_COOKIE。鍵名衝突時,優先順序由 php.ini request_order 決定(預設 GP,即 POST 覆蓋 GET)。建議顯式使用 $_GET 或 $_POST,避免隱性衝突。
<!-- form.html -->
<form action="handle.php" method="post">
<input name="username" type="text">
<input name="password" type="password">
<button type="submit">送出</button>
</form>
<?php
// handle.php
var_dump($_POST); // 顯示提交資料
// 輸出範例:array(2) { ["username"]=> string(5) "admin" ["password"]=> string(8) "secret123" }
$_GET/$_POST 導致 XSS 漏洞,務必用 htmlspecialchars()。session_start() 就使用 $_SESSION。打好這些基礎,後續學習 OOP、框架、資料庫操作將事半功倍。