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

PHP 表單處理全解析:GET/POST 請求、數據驗證與安全實踐

     編輯:PHP 相關知識

GET 請求示例

<!-- hello.html -->
<form action="hello.php" method="get">
    姓名:<input name="name" type="text" />
    <input type="submit" />
</form>
<?php
// hello.php
header('Content-Type: text/html; charset=utf-8');
$name = $_GET['name'] ?? '';
echo $name ? "Hello {$name}" : 'Please input name';
?>

特點:參數顯示在 URL、長度受限(~2KB)、可收藏/分享、適合冪等查詢操作。

POST 請求示例

<!-- add.html -->
<form action="add.php" method="post">
    <input name="num1" type="number" /> +
    <input name="num2" type="number" />
    <input type="submit" value="相加" />
</form>
<?php
// add.php
$n1 = $_POST['num1'] ?? '';
$n2 = $_POST['num2'] ?? '';
echo ($n1 !== '' && $n2 !== '') ? ($n1 + $n2) : 'Please input num';
?>

特點:數據在請求體、無長度限制、不曝露於 URL、適合狀態變更操作(增刪改)。

核心區別速查

維度GETPOST
數據位置URL Query StringRequest Body
長度限制~2KB (瀏覽器/服務器)無 (受 post_max_size)
可見性地址欄可見不可見
緩存/收藏可緩存、可收藏不可緩存
語義安全、冪等(查詢)非冪等(狀態變更)
編碼application/x-www-form-urlencoded支援 multipart/form-data (上傳)

安全最佳實踐

  • 輸入驗證:永不信任 `$_GET/$_POST`,使用 `filter_input()`、正則、類型轉換驗證。
  • 輸出轉義:HTML 輸出用 `htmlspecialchars($str, ENT_QUOTES, 'UTF-8')` 防 XSS。
  • CSRF 防護:表單隱藏 csrf_token,Session 驗證。
  • 檔案上傳:驗證 MIME、擴展名、尺寸;重命名存儲;存放非 Web 可訪問目錄。
  • SQL 注入:預處理語句,絕不拼接 SQL。

action="" 與 action 省略

action="" 或省略 action 皆提交至當前頁面 URL,符合 HTML5 標準。

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