首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 表單處理完整指南:GET 與 POST 詳解與安全實踐

     編輯:PHP 相關知識

什麼是 HTML 表單?

表單(<form>)是網頁收集用戶輸入並提交給伺服器的核心機制。兩個必要屬性:

  • action:提交目標 URL(如 info.php)。
  • method:提交方式 —— get(預設,參數附在 URL)或 post(參數在請求主體)。

基本表單範例

<!-- test.html -->
<form action="info.php" method="get">
  用戶名:<input type="text" name="username" value=""><br>
  密碼:<input type="password" name="password" value=""><br>
  <input type="submit" value="提交">
  <input type="reset" value="重置">
</form>

PHP 接收表單資料

三個超全域陣列:

  • $_GET:僅獲取 GET 請求參數。
  • $_POST:僅獲取 POST 請求主體資料。
  • $_REQUEST:合併 GET、POST、COOKIE(不推薦,來源不明確,安全風險)。
<?php
// info.php
$username = $_GET['username'] ?? '';
$password = $_GET['password'] ?? '';
echo "您輸入的用戶名為:{$username},密碼為:{$password}";
?>

GET vs POST 深度對比

維度GETPOST
參數可見性URL 顯示(如 ?username=foo)請求主體,URL 不顯示
資料長度受限於瀏覽器/伺服器 URL 長度(IE 約 2083 字元)理論無上限,受 post_max_size、memory_limit 限制
編碼支援僅 ASCII(需 URL 編碼)支援完整字符集(含檔案上傳 multipart/form-data)
快取/書籤可被快取、收藏、分享不會被快取/收藏
安全性敏感資料(密碼)暴露於歷史/日誌相對安全,但仍需 HTTPS
冪等性適合冪等操作(查詢、分頁)適合非冪等操作(新增、修改、刪除)
瀏覽器重新整理無提示直接重送多數瀏覽器彈窗確認「重新提交表單」

何時用 GET?何時用 POST?

W3C 建議: 僅當表單操作是冪等(多次提交副作用相同)時用 GET。

  • GET 適用: 搜尋、分頁、篩選、排序、匯出連結、API 查詢。
  • POST 適用: 登入、註冊、修改資料、刪除、上傳檔案、付款、發送郵件。

安全實踐清單

  1. 敏感操作務必用 POST + HTTPS。
  2. CSRF 防護: 表單加入隱藏 csrf_token,伺服器驗證。
  3. 輸入驗證與過濾: 使用 filter_input()、htmlspecialchars()、預處理語句(PDO)。
  4. 檔案上傳: enctype="multipart/form-data",驗證 MIME、副檔名、大小、儲存路徑非網頁目錄。
  5. 避免 $_REQUEST:明確使用 $_GET 或 $_POST。

進階:PHP 端處理陣列與多值欄位

<!-- 多選框、同名輸入框 -->
<input type="checkbox" name="colors[]" value="red">
<input type="checkbox" name="colors[]" value="green">
<input type="checkbox" name="colors[]" value="blue">

<?php
$colors = $_POST['colors'] ?? []; // 自動為陣列
foreach ($colors as $c) { echo htmlspecialchars($c) . ' '; }
?>

總結

理解 GET/POST 的語義差異、安全性、快取行為,是 Web 開發基石。遵循「查詢用 GET,狀態變更用 POST」原則,配合 HTTPS、CSRF Token、輸入驗證,即可構建健壯的表單處理流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved