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

PHP $_GET 與 $_POST 差異完整解析

     編輯:PHP 相關知識

HTTP 請求方法:GET vs POST 核心差異與選擇指南

理解 $_GET 與 $_POST 的本質差異,是 Web 開發安全與架構設計的基礎。

核心差異對照表

特性GETPOST
語意從伺服器獲取資源向伺服器提交/修改資料
資料位置URL 查詢字串 ?key=val&k2=v2HTTP Request Body
可見性瀏覽器網址列完整顯示對用戶不可見(需開發工具查看)
長度限制受 URL 長度限制(約 2KB~8KB)理論無上限(受 post_max_size 設定)
字符集僅 ASCII,需 URL 編碼支援完整 ISO-10646 (UTF-8 等)
快取/書籤可被快取、收藏、分享不可快取、不可收藏
重複提交重新整理無副作用重新整理會重複提交(需 PRG 模式防護)
安全性低(日誌、歷史記錄、Referer 洩露)較高(不在 URL 中)

何時使用 GET?

  • 搜尋、篩選、分頁:/products?category=shoes&page=2
  • 公開資源的唯一識別:/article/123
  • 需支援書籤分享的頁面
  • 冪等操作(不修改伺服器狀態)

何時使用 POST?

  • 登入、註冊、修改密碼
  • 發布文章、上傳檔案
  • 刪除資料、付款下單
  • 敏感資料傳輸
  • 非冪等操作(會改變伺服器狀態)

PHP 代碼實例

<?php
// GET 範例:搜尋頁
$keyword = $_GET['q'] ?? '';
$page    = (int)($_GET['page'] ?? 1);
// SQL: SELECT * FROM posts WHERE title LIKE ? LIMIT ?, 10

// POST 範例:發布文章
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $title   = trim($_POST['title'] ?? '');
    $content = trim($_POST['content'] ?? '');
    // 驗證 → 入庫 → header('Location: /post/'.$id)  // PRG 模式
}

// $_REQUEST = $_GET + $_POST + $_COOKIE(不建議使用,來源不明確)
?>

進階補充

  • PUT/PATCH/DELETE:RESTful API 常用,PHP 需透過 php://input 讀取
  • enctype="multipart/form-data":檔案上傳專用,僅限 POST
  • CSRF 防護:所有 POST 表單必須包含 CSRF Token
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved