$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// 郵件地址有效,繼續處理
} else {
// 郵件地址無效,顯示錯誤消息
}
這裡, filter_input()先清洗輸入, filter_var()再進一步驗證其合法性。組合使用可以有效避免無效或惡意數據進入業務邏輯層。
$phone = $_POST['phone'];
$pattern = "/^(\+?\d{1,3}-)?\d{10}$/";
if (preg_match($pattern, $phone)) {
// 電話號碼有效,繼續處理
} else {
// 電話號碼無效,提示用戶
}
這個示例中使用的正則表達式支持可選的國家區號前綴,並要求電話號碼為10位數字,有效提升了輸入校驗的準確性。
$comment = $_POST['comment'];
$encoded_comment = htmlspecialchars($comment);
// 將編碼後的評論存儲到數據庫或顯示在頁面上
通過轉義如< 、 >等特殊字符,攻擊者即使注入了腳本標籤,也不會被瀏覽器解析執行,從而避免惡意行為。
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(":username", $username);
$username = $_POST['username'];
$stmt->execute();
通過綁定參數而不是直接拼接字符串,可以確保輸入數據被自動轉義,有效防止注入行為。