#laptrinhphpcoban
x0
Sau khi người dùng nhập dữ liệu vào form, bạn không nên tin tưởng dữ liệu đó ngay lập tức.
Người dùng có thể:
❌ Để trống dữ liệu
❌ Nhập khoảng trắng vô nghĩa
❌ Chèn mã HTML hoặc JavaScript độc hại
❌ Gửi dữ liệu sai định dạng
Vì vậy trước khi xử lý hoặc lưu vào database, chúng ta cần Validate (kiểm tra dữ liệu).
🎯 Mục tiêu bài học
Sau bài này bạn sẽ biết:
✅ Kiểm tra dữ liệu bắt buộc nhập
✅ Loại bỏ khoảng trắng thừa
✅ Chống chèn mã HTML
✅ Hiển thị thông báo lỗi
✅ Tạo form an toàn hơn
🤔 Validate là gì?
Validate là quá trình:
🔎 Kiểm tra dữ liệu người dùng nhập có hợp lệ hay không.
Ví dụ:
| 📝 Dữ liệu | ✅ Hợp lệ |
|---|---|
| Nguyễn Văn A | Có |
| abc@gmail.com | Có |
| (để trống) | Không |
<script>alert(1)</script> | Không |
1️⃣ Kiểm tra dữ liệu bắt buộc (required)
Ví dụ form:
<form method="post">
Họ tên:
<input type="text" name="fullname">
<button type="submit">
Gửi
</button>
</form>
Xử lý:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["fullname"])) {
echo "Vui lòng nhập họ tên";
}
}
?>
Giải thích
empty()
Kiểm tra:
Chuỗi rỗng
null
false
giá trị không có dữ liệu
Ví dụ:
$name = "";
if (empty($name)) {
echo "Trống";
}
Kết quả:
Trống
2️⃣ Hàm trim()
Người dùng có thể nhập:
Nguyễn Văn A
hoặc
Nguyễn Văn A
với rất nhiều khoảng trắng thừa.
Cú pháp
trim($chuoi);
Ví dụ:
$name = " Nguyễn Văn A ";
echo trim($name);
Kết quả:
Nguyễn Văn A
Kết hợp với form
$name = trim($_POST["fullname"]);
Bây giờ dữ liệu sạch hơn trước khi xử lý.
3️⃣ Hàm htmlspecialchars()
Đây là hàm cực kỳ quan trọng.
Nó giúp chuyển các ký tự HTML thành dạng văn bản.
Ví dụ nguy hiểm
Người dùng nhập:
<script>alert('Hack')</script>
Nếu hiển thị trực tiếp:
echo $_POST["fullname"];
Trình duyệt sẽ chạy JavaScript.
⚠️ Đây là lỗ hổng XSS.
Sử dụng htmlspecialchars()
$name = htmlspecialchars($_POST["fullname"]);
echo $name;
Kết quả:
<script>alert('Hack')</script>
Script không thể chạy được.
🛡️ Bộ lọc cơ bản chuẩn PHP
Thông thường chúng ta kết hợp:
$name = trim($_POST["fullname"]);
$name = htmlspecialchars($name);
Hoặc viết gọn:
$name = htmlspecialchars(
trim($_POST["fullname"])
);
4️⃣ Ví dụ hoàn chỉnh
<?php
$message = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = trim($_POST["fullname"]);
if (empty($name)) {
$message = "Vui lòng nhập họ tên";
} else {
$name = htmlspecialchars($name);
$message = "Xin chào: " . $name;
}
}
?>
<form method="post">
Họ tên:
<input type="text" name="fullname">
<button type="submit">
Gửi
</button>
</form>
<p><?php echo $message; ?></p>
🧪 Test thử
Nhập:
Nguyễn Văn A
Kết quả:
Xin chào: Nguyễn Văn A
Nhập:
<script>alert(1)</script>
Kết quả:
Xin chào: <script>alert(1)</script>
Script không chạy.
5️⃣ Hàm xử lý dữ liệu riêng
Trong thực tế ta thường tạo hàm:
function clean($data)
{
$data = trim($data);
$data = htmlspecialchars($data);
return $data;
}
Sử dụng:
$name = clean($_POST["fullname"]);
Code ngắn gọn và dễ tái sử dụng.
🚀 Mini Project
Tạo form:
Tên:
<input type="text" name="name">
Email:
<input type="text" name="email">
<button>Gửi</button>
Yêu cầu:
✅ Không được để trống
✅ Dùng trim()
✅ Dùng htmlspecialchars()
✅ Hiển thị dữ liệu sau khi submit
📌 Ghi nhớ
🎯 empty() → kiểm tra dữ liệu trống
🎯 trim() → xóa khoảng trắng đầu và cuối
🎯 htmlspecialchars() → chống XSS cơ bản
🎯 Luôn validate dữ liệu trước khi xử lý hoặc lưu database
🎯 Không bao giờ tin tưởng dữ liệu người dùng gửi lên
🏆 Kết thúc bài 18
Sau bài này bạn đã biết cách:
✅ Validate dữ liệu cơ bản
✅ Kiểm tra dữ liệu bắt buộc
✅ Làm sạch dữ liệu đầu vào
✅ Chống chèn mã HTML nguy hiểm
✅ Chuẩn bị cho việc Upload File và Database
👉 Bài tiếp theo: Bài 19 — Upload File bằng PHP
📂 $_FILES
🖼️ Upload ảnh
🔍 Kiểm tra phần mở rộng (extension)
🛡️ Chặn upload file nguy hiểm




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