表單驗證是 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、域名、路徑、查詢字串 |
檢測 get_magic_quotes_gpc()(PHP 5.4+ 已移除),若關閉則對字串或一維陣列執行 addslashes(),防止 SQL Injection。
對字串、一維、二維陣列遞迴執行 stripslashes(),移除入庫時加入的反斜線。
依序執行 htmlspecialchars()、空白轉 、換行轉 <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+ 已移除,直接假設關閉即可。PostValidator,方法改駝峰式 validateText()。這個 class_post 類別雖然年代久遠,但其「驗證、轉義、還原、顯示」四階段處理流程極具教學價值。理解核心邏輯後,開發者可輕鬆將其重構為符合現代標準的驗證元件,或直接引入成熟套件(如 respect/validation、Laravel Validator)加速開發。