NTM Solutions

Bài đăng nổi bật

🚀 Laravel 12 (2026) — Từ PHP Core đến Full Stack📘

Nếu cập nhật theo Laravel 12 LTS (2026) thì mình sẽ chia thành các phần như sau để người học đi từ PHP Core → Laravel → Triển khai dự án th...

Thứ Tư, 1 tháng 7, 2026

📘 Bài 31 — Filter dữ liệu trong PHP 🛡️

Trước đây bạn đã học Password Hash. Bài tiếp theo hợp lý nhất là Filter dữ liệu (Data Filtering & Validation) vì đây là kỹ năng gần như dự án PHP nào cũng sử dụng.

Làm sạch và kiểm tra dữ liệu người dùng


🎯 Mục tiêu bài học

Sau bài này bạn sẽ biết:

✅ Filter dữ liệu bằng filter_var()

✅ Validate Email

✅ Validate URL

✅ Validate Number

✅ Làm sạch chuỗi nhập vào

✅ Một số Filter hữu ích khác trong PHP


🤔 Vì sao phải Filter dữ liệu?

Người dùng có thể nhập bất cứ thứ gì.

Ví dụ:

abc

Trong ô tuổi.

Hoặc

hello@@gmail

Trong ô email.

Hoặc

<script>alert(1)</script>

Trong ô họ tên.

Nếu không kiểm tra, website sẽ:

❌ lỗi dữ liệu

❌ dữ liệu rác

❌ tăng nguy cơ bị tấn công


🛡️ filter_var()

Đây là hàm chuẩn của PHP để:

  • Validate dữ liệu

  • Làm sạch dữ liệu

Cú pháp

filter_var($value, FILTER_...)

1️⃣ Kiểm tra Email

<?php

$email = "admin@gmail.com";

if (
    filter_var(
        $email,
        FILTER_VALIDATE_EMAIL
    )
) {

    echo "Email hợp lệ";

} else {

    echo "Email không hợp lệ";

}

Kết quả

Email hợp lệ

Ví dụ sai

$email = "abc@@gmail";

if (
    filter_var(
        $email,
        FILTER_VALIDATE_EMAIL
    )
) {

    echo "OK";

} else {

    echo "Sai định dạng";

}

Kết quả

Sai định dạng

2️⃣ Kiểm tra URL

<?php

$url = "https://example.com";

if (
    filter_var(
        $url,
        FILTER_VALIDATE_URL
    )
) {

    echo "URL hợp lệ";

}
else{

    echo "URL sai";

}

Ví dụ

https://google.com

abcxyz


3️⃣ Kiểm tra số nguyên

<?php

$age = 25;

if (
    filter_var(
        $age,
        FILTER_VALIDATE_INT
    )
) {

    echo "Đây là số nguyên";

}

Ví dụ

25

25.5

abc


4️⃣ Kiểm tra số thực

<?php

$number = 3.14;

if (
    filter_var(
        $number,
        FILTER_VALIDATE_FLOAT
    )
) {

    echo "Float hợp lệ";

}

5️⃣ Kiểm tra địa chỉ IP

<?php

$ip = "192.168.1.10";

if (
    filter_var(
        $ip,
        FILTER_VALIDATE_IP
    )
){

    echo "IP hợp lệ";

}

6️⃣ Làm sạch Email

Ví dụ

admin@gmail.com<script>

Có thể dùng

<?php

$email = "admin@gmail.com<script>";

$email = filter_var(
    $email,
    FILTER_SANITIZE_EMAIL
);

echo $email;

Kết quả

admin@gmail.comscript

7️⃣ Làm sạch URL

🔢🛠️ Hàm/Kỹ thuật🎯 Mục đích
1️⃣trim()Loại bỏ khoảng trắng đầu/cuối
2️⃣strip_tags() (nếu không cho phép HTML)Xóa các thẻ HTML
3️⃣filter_var()Validate email, URL, số...
4️⃣htmlspecialchars()Escape khi xuất ra HTML (quan trọng nhất)
5️⃣Prepared StatementChống SQL Injection (không phải XSS)
6️⃣CSP (Content Security Policy)Giảm thiểu XSS ngay cả khi lọt dữ liệu độc
<?php

$url = "https://example.com<script>";

$url = filter_var(
    $url,
    FILTER_SANITIZE_URL
);

echo htmlspecialchars($url);

8️⃣ Validate Boolean

<?php

$value = "true";

$result = filter_var(
    $value,
    FILTER_VALIDATE_BOOLEAN
);

var_dump($result);

Kết quả

bool(true)

9️⃣ Validate theo khoảng giá trị

Ví dụ tuổi từ 1 đến 120

<?php

$age = 35;

$options = [

    "options" => [

        "min_range" => 1,

        "max_range" => 120

    ]

];

if (

    filter_var(

        $age,

        FILTER_VALIDATE_INT,

        $options

    )

){

    echo "Tuổi hợp lệ";

}

🔟 Kết hợp với Form HTML

<form method="post">

Email

<input
    type="text"
    name="email"
>

<button>

Kiểm tra

</button>

</form>

<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $email = trim($_POST["email"]);

    if (

        filter_var(

            $email,

            FILTER_VALIDATE_EMAIL

        )

    ) {

        echo "✅ Email hợp lệ";

    } else {

        echo "❌ Email không hợp lệ";

    }

}

📌 Một số Filter thường dùng

🔢🧩 Filter💖 Công dụng
1️⃣FILTER_VALIDATE_EMAILKiểm tra Email
2️⃣FILTER_VALIDATE_URLKiểm tra URL
3️⃣FILTER_VALIDATE_INTKiểm tra số nguyên
4️⃣FILTER_VALIDATE_FLOATKiểm tra số thực
5️⃣FILTER_VALIDATE_IPKiểm tra địa chỉ IP
6️⃣FILTER_VALIDATE_BOOLEANKiểm tra giá trị Boolean
7️⃣FILTER_SANITIZE_EMAILLàm sạch Email
8️⃣FILTER_SANITIZE_URLLàm sạch URL

💡 Lưu ý

⚠️ FILTER_SANITIZE_STRING đã deprecated từ PHP 8.1 và không nên sử dụng trong PHP 8.2. Thay vào đó, hãy kết hợp trim(), filter_var() với các filter phù hợp và htmlspecialchars() khi xuất dữ liệu ra HTML.


🚀 Thực hành

Viết chương trình:

  • ✅ Kiểm tra Email

  • ✅ Kiểm tra Website

  • ✅ Kiểm tra Tuổi (1–120)

  • ✅ Kiểm tra IP

  • ✅ Thông báo hợp lệ hoặc không hợp lệ


📚 Tổng kết

Sau bài này bạn đã biết:

filter_var()

✅ Validate Email

✅ Validate URL

✅ Validate Number

✅ Validate IP

✅ Validate Boolean

✅ Sanitize Email & URL

✅ Kết hợp Filter với Form HTML

➡️ Bài tiếp theo: 📘 Bài 32 — Giới thiệu OOP PHP (Class, Object, Property, Method và cách tư duy lập trình hướng đối tượng trong PHP).

╔══════════════════════════════╗
🤖 Made by AI • Precision & Logic
╚══════════════════════════════╝

x1

quay về MỤC LỤC

Không có nhận xét nào:

Đăng nhận xét

Facebook Youtube RSS