在 Web 開發中,驗證用戶提交的表單數據是否包含所有必填欄位,是後端處理的基礎環節。本文將介紹兩種在 CodeIgniter (CI) 框架與原生 PHP 中,一次性檢查多個欄位是否為空的實用方法,並說明兩者的差異與適用場景。
CodeIgniter 提供了 $this->input->get_post() 方法,可同時獲取 GET 與 POST 數據,並自動進行基本的安全過濾(如 XSS 清理)。這是框架推薦的做法,能提升應用的安全性。
$req = array('id', 'name', 'age', 'mobile');
for ($i = 0; $i < count($req); $i++) {
// 使用 CI 輸入類獲取數據,第二個參數 true 表示啟用 XSS 過濾
$val = $this->input->get_post($req[$i], TRUE);
if (empty($val)) {
exit($req[$i] . ' 為必填欄位,不可為空');
}
$data[$req[$i]] = $val; // 建議使用欄位名作為鍵值,方便後續使用
}
print_r($data); // 輸出驗證通過的數據
若專案未使用框架,或為了追求極致性能,可直接操作 $_POST 超全局變數。此法簡潔直接,但需開發者自行處理輸入過濾與安全防護。
$req = array('id', 'name', 'age', 'mobile');
for ($i = 0; $i < count($req); $i++) {
$val = $_POST[$req[$i]] ?? null; // PHP 7+ 空合併運算子避免未定義索引警告
if (empty($val)) {
exit($req[$i] . ' 為必填欄位,不可為空');
}
$data[$req[$i]] = $val;
}
print_r($data);
htmlspecialchars()、預處理語句等防禦措施。exit()。掌握這兩種基礎驗證模式,能幫助你在不同 PHP 專案中快速建立穩健的數據入口防線。