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

PHP 表單驗證類別完整指南

     編輯:PHP 綜合知識

前言

表單驗證是 Web 應用的基石。本文整理一個功能齊全的 class_post 驗證類別,涵蓋英數字、純數字、中文字、身分證、Email、電話、郵遞區號、URL 等常見格式,並提供資料入庫轉義、出庫還原、輸出顯示三大資料處理方法,極適合直接納入專案共用函式庫。

驗證方法一覽

方法用途參數說明
fun_text1($min, $max, $str)英數字組合長度$min 最小長度,$max 最大長度
fun_text2($min, $max, $str)純數字長度同上
fun_font($min, $max, $str)中文字長度同上(以雙位元組判斷)
fun_status($str)身分證字號支援 15/18 碼及末碼 X
fun_email($str)Email 格式標準 RFC 簡化版
fun_phone($str)電話號碼支援區碼、分機、手機格式
fun_zip($str)郵遞區號5 碼數字,首碼非 0
fun_url($str)網址格式http/https、域名、路徑、查詢字串

資料處理三部曲

1. data_join() - 入庫前轉義

檢測 get_magic_quotes_gpc()(PHP 5.4+ 已移除),若關閉則對字串或一維陣列執行 addslashes(),防止 SQL Injection。

2. data_revert() - 讀出後還原

對字串、一維、二維陣列遞迴執行 stripslashes(),移除入庫時加入的反斜線。

3. data_show() - 輸出時格式化

依序執行 htmlspecialchars()、空白轉 &nbsp;、換行轉 <br>,確保內容在 HTML 中正確顯示且防 XSS。注意:呼叫前須先 data_revert(),表單回填則無需此步驟。

實際呼叫範例

$validator = new class_post();

// 驗證帳號:6-12 位英數字
if (!$validator->fun_text1(6, 12, $_POST['account'])) {
    die('帳號格式錯誤');
}

// 驗證 Email
if (!$validator->fun_email($_POST['email'])) {
    die('Email 格式錯誤');
}

// 入庫前處理
$_POST = $validator->data_join($_POST);

// 讀出後處理
$row = $validator->data_revert($row);

// 輸出顯示
$row = $validator->data_show($row);
echo $row['content']; // 已安全轉義並換行

現代化建議

  • 棄用 ereg/preg 老寫法:改用 filter_var() 內建驗證(Email、URL、IP 等)與 preg_match() 統一正則引擎。
  • 移除 magic_quotes 相容碼:PHP 5.4+ 已移除,直接假設關閉即可。
  • 採用 PSR-12 風格:類別命名改為 PostValidator,方法改駝峰式 validateText()。
  • 整合驗證規則陣列:將規則定義於設定檔,支援動態增減驗證項目。
  • 丟出異常而非回傳布林:提供詳細錯誤訊息與欄位名稱,方便前端顯示。

結語

這個 class_post 類別雖然年代久遠,但其「驗證、轉義、還原、顯示」四階段處理流程極具教學價值。理解核心邏輯後,開發者可輕鬆將其重構為符合現代標準的驗證元件,或直接引入成熟套件(如 respect/validation、Laravel Validator)加速開發。

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