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

PHP 過濾器完整指南:從基礎驗證到回調過濾

     編輯:PHP 入門

PHP 過濾器完整指南:從基礎驗證到回調過濾

PHP 過濾器擴展專為驗證與淨化外部輸入設計,是 Web 應用安全的第一道防線。外部數據來源包括:表單輸入、Cookies、Web Services、服務器變量、資料庫查詢結果等。

核心過濾函數

函數用途
filter_var()單一變量過濾
filter_var_array()多變量批量過濾
filter_input()獲取並過濾單一輸入變量
filter_input_array()批量獲取並過濾輸入變量

基礎驗證範例:整數檢查

$int = 123;
if (!filter_var($int, FILTER_VALIDATE_INT)) {
    echo "非法整數";
} else {
    echo "合法整數";
}

Validating 與 Sanitizing 兩大類過濾器

  • Validating:FILTER_VALIDATE_INT、FILTER_VALIDATE_EMAIL、FILTER_VALIDATE_URL、FILTER_VALIDATE_IP 等
  • Sanitizing:FILTER_SANITIZE_STRING、FILTER_SANITIZE_EMAIL、FILTER_SANITIZE_URL、FILTER_SANITIZE_NUMBER_INT 等

選項與標誌進階應用

$var = 300;
$options = ['options' => ['min_range' => 0, 'max_range' => 256]];
if (!filter_var($var, FILTER_VALIDATE_INT, $options)) {
    echo "超出範圍";  // 300 > 256,輸出此訊息
}

表單輸入驗證實戰

驗證 Email (GET)

if (!filter_has_var(INPUT_GET, 'email')) {
    echo "無 email 參數";
} elseif (!filter_input(INPUT_GET, 'email', FILTER_VALIDATE_EMAIL)) {
    echo "非法 Email";
} else {
    echo "合法 Email";
}

淨化 URL

if (filter_has_var(INPUT_GET, 'url')) {
    $url = filter_input(INPUT_GET, 'url', FILTER_SANITIZE_URL);
    echo $url;  // 移除非法字符
}

批量過濾多個輸入

$filters = [
    'name'  => ['filter' => FILTER_SANITIZE_STRING],
    'age'   => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 1, 'max_range' => 120]],
    'email' => FILTER_VALIDATE_EMAIL
];
$result = filter_input_array(INPUT_GET, $filters);
if (!$result['age']) echo "年齡需 1-120";
elseif (!$result['email']) echo "Email 非法";
else echo "輸入正確";

回調過濾器:完全自定義邏輯

function convertSpace($str) {
    return str_replace('_', '.', $str);
}
$string = "www_runoob_com!";
echo filter_var($string, FILTER_CALLBACK, ['options' => 'convertSpace']);
// 輸出:www.runoob.com!

也可直接使用內建函數作為回調,如 ['options' => 'strtoupper']。

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