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 Statement | Chố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_EMAIL | Kiểm tra Email |
| 2️⃣ | FILTER_VALIDATE_URL | Kiểm tra URL |
| 3️⃣ | FILTER_VALIDATE_INT | Kiểm tra số nguyên |
| 4️⃣ | FILTER_VALIDATE_FLOAT | Kiểm tra số thực |
| 5️⃣ | FILTER_VALIDATE_IP | Kiểm tra địa chỉ IP |
| 6️⃣ | FILTER_VALIDATE_BOOLEAN | Kiểm tra giá trị Boolean |
| 7️⃣ | FILTER_SANITIZE_EMAIL | Làm sạch Email |
| 8️⃣ | FILTER_SANITIZE_URL | Là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).




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