Bộ lọc PHP
Xác thực dữ liệu = Xác định xem dữ liệu có ở dạng phù hợp hay không.
Vệ sinh dữ liệu = Xóa mọi ký tự không hợp lệ khỏi dữ liệu.
Phần mở rộng bộ lọc PHP
Bộ lọc PHP được sử dụng để xác thực và vệ sinh đầu vào bên ngoài.
Tiện ích mở rộng bộ lọc PHP có nhiều chức năng cần thiết để kiểm tra thông tin đầu vào của người dùng và được thiết kế để giúp việc xác thực dữ liệu dễ dàng và nhanh chóng hơn.
Hàm filter_list()
có thể được sử dụng để liệt kê những gì tiện ích mở rộng bộ lọc PHP cung cấp:
Ví dụ
<table>
<tr>
<td>Filter Name</td>
<td>Filter ID</td>
</tr>
<?php
foreach (filter_list() as $id =>$filter) {
echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
}
?>
</table>
Hãy tự mình thử »Tại sao nên sử dụng bộ lọc?
Nhiều ứng dụng web nhận đầu vào từ bên ngoài. Đầu vào/dữ liệu bên ngoài có thể là:
- Người dùng nhập từ một biểu mẫu
- Bánh quy
- Dữ liệu dịch vụ web
- Biến máy chủ
- Kết quả truy vấn cơ sở dữ liệu
Bạn phải luôn xác thực dữ liệu bên ngoài!
Dữ liệu được gửi không hợp lệ có thể dẫn đến các vấn đề về bảo mật và làm hỏng trang web của bạn!
Bằng cách sử dụng bộ lọc PHP, bạn có thể chắc chắn rằng ứng dụng của mình nhận được dữ liệu đầu vào chính xác!
Hàm filter_var() trong PHP
Hàm filter_var()
vừa xác thực vừa vệ sinh dữ liệu.
Hàm filter_var()
lọc một biến duy nhất bằng bộ lọc được chỉ định. Phải mất hai phần dữ liệu:
- Biến bạn muốn kiểm tra
- Loại séc sử dụng
Vệ sinh một chuỗi
Ví dụ sau sử dụng hàm filter_var()
để xóa tất cả các thẻ HTML khỏi một chuỗi:
Ví dụ
<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
Hãy tự mình thử »Xác thực một số nguyên
Ví dụ sau sử dụng hàm filter_var()
để kiểm tra xem biến $int có phải là số nguyên hay không. Nếu $int là số nguyên, đầu ra của mã bên dưới sẽ là: "Số nguyên hợp lệ". Nếu $int không phải là số nguyên, đầu ra sẽ là: "Số nguyên không hợp lệ":
Ví dụ
<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Hãy tự mình thử »Mẹo: filter_var() và vấn đề với 0
Trong ví dụ trên, nếu $int được đặt thành 0, hàm trên sẽ trả về "Số nguyên không hợp lệ". Để giải quyết vấn đề này, hãy sử dụng mã dưới đây:
Ví dụ
<?php
$int = 0;
if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Hãy tự mình thử »Xác thực địa chỉ IP
Ví dụ sau sử dụng hàm filter_var()
để kiểm tra xem biến $ip có phải là địa chỉ IP hợp lệ hay không:
Ví dụ
<?php
$ip = "127.0.0.1";
if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
echo("$ip is a valid IP address");
} else {
echo("$ip is not a valid IP address");
}
?>
Hãy tự mình thử »Vệ sinh và xác thực địa chỉ email
Ví dụ sau sử dụng hàm filter_var()
để trước tiên xóa tất cả các ký tự không hợp lệ khỏi biến $email, sau đó kiểm tra xem đó có phải là địa chỉ email hợp lệ hay không:
Ví dụ
<?php
$email = " [email protected] ";
// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
?>
Hãy tự mình thử »Vệ sinh và xác thực một URL
Ví dụ sau sử dụng hàm filter_var()
để trước tiên xóa tất cả các ký tự không hợp lệ khỏi một URL, sau đó kiểm tra xem $url có phải là URL hợp lệ hay không:
Ví dụ
<?php
$url = "https://www.example.com.vn";
// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);
// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
echo("$url is a valid URL");
} else {
echo("$url is not a valid URL");
}
?>
Hãy tự mình thử »Tham khảo bộ lọc PHP hoàn chỉnh
Để có tài liệu tham khảo đầy đủ về tất cả các hàm lọc, hãy truy cập Tài liệu tham khảo bộ lọc PHP đầy đủ của chúng tôi. Kiểm tra từng bộ lọc để xem những tùy chọn và cờ nào có sẵn.
Tài liệu tham khảo chứa mô tả ngắn gọn và ví dụ về cách sử dụng cho từng chức năng!