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

PHP 表單處理完全指南:$_GET、$_POST、$_REQUEST 差異、安全驗證與版本相容性

     編輯:PHP 綜合知識

核心超全域變數對照

變數來源可見性長度限制適用場景
$_GETURL 查詢字串瀏覽器網址列可見~2000 字元 (瀏覽器限制)搜尋、分頁、非敏感資料、可書籤
$_POSTHTTP Body不可見無 (受 post_max_size)登入、註冊、修改資料、檔案上傳
$_REQUESTGET+POST+COOKIE混合同上快速原型、不建議生產環境

表單 HTML 範本

<form action="handle.php" method="post">
    姓名:<input type="text" name="name" required>
    年齡:<input type="number" name="age" min="1" max="120">
    <button type="submit">送出</button>
</form>

後端處理範例

 120) $errors[] = '年齡範圍 1-120';

    // 3. 回應
    if ($errors) {
        // 重導回表單攜帶錯誤 (PRG 模式)
        $_SESSION['form_errors'] = $errors;
        $_SESSION['form_old'] = $_POST;
        header('Location: form.php');
        exit;
    }

    // 成功邏輯
    echo "歡迎,$name (${age} 歲)";
}
?>

版本相容性:register_globals 已移除

PHP 5.4+ 完全移除 register_globals,舊代碼 $username 直接可用將失效。務必使用 $_POST['username']。

import_request_variables() 替代方案

// 僅供遷移舊專案過渡使用,新專案請勿使用
import_request_variables('gp', 'rvar_');
// 之後可用 $rvar_username
// 建議:直接重構為 $_POST['username']

安全驗證三層防線

  1. 前端 (JS/HTML5): required、pattern、type=email、即時提示,降低無效請求
  2. 後端 (PHP): 必須驗證、過濾、轉義,永不信任客戶端
  3. 資料庫: Prepared Statement 參數綁定,防 SQL 注入

常見漏洞與防護

漏洞攻擊向量防護
XSS<script>alert(1)</script> 送入姓名輸出時 htmlspecialchars()
CSRF偽造表單提交表單隱藏 csrf_token,驗證來源
SQLi' OR 1=1 -- 送入查詢PDO prepare + bindParam
檔案上傳上傳 .php 偽裝圖片驗證 MIME、重命名、存非執行目錄

相關專題

  • 《PHP 基本語法入門教程》
  • 《PHP 字串(string)用法總結》
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved