Mục lục
Xác thực & làm sạch dữ liệu bằng bộ lọc
Làm sạch dữ liệu và xác thực thông tin nhập của người dùng là một trong những tác vụ phổ biến nhất trong ứng dụng web. Để làm cho nhiệm vụ này dễ dàng hơn, PHP cung cấp tiện ích mở rộng bộ lọc gốc mà bạn có thể sử dụng để làm sạch hoặc xác thực dữ liệu như địa chỉ e-mail, URL, địa chỉ IP,...
Để xác thực dữ liệu bằng cách sử dụng tiện ích mở rộng bộ lọc, bạn cần sử dụng hàm filter_var() của PHP. Cú pháp của hàm này như sau:
filter_var(variable, filter, options)
Hàm này có 3 tham số trong đó hai tham số cuối cùng là tùy chọn. Tham số đầu tiên là giá trị được lọc, tham số thứ 2 là ID của bộ lọc để áp dụng và tham số thứ 3 là mảng các tùy chọn liên quan đến bộ lọc. Hãy xem nó hoạt động như thế nào qua các cách làm sau đây.
Làm sạch một chuỗi
Ví dụ sau sẽ làm sạch một chuỗi bằng cách xóa tất cả các thẻ HTML ra khỏi nó:
Ví dụ
<?php
// Sample user comment
$comment = "<h1>Hey there! How are you doing today?</h1>";
// Sanitize and print comment string
$sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $sanitizedComment;
?>
Kết quả của ví dụ trên sẽ như sau:
Hey there! How are you doing today?
Xác thực giá trị số nguyên
Ví dụ sau sẽ xác nhận xem giá trị có phải là một số nguyên hợp lệ hay không.
Ví dụ
<?php
// Sample integer value
$int = 20;
// Validate sample integer value
if (filter_var($int, FILTER_VALIDATE_INT)) {
echo "The <b>$int</b> is a valid integer";
} else{
echo "The <b>$int</b> is not a valid integer";
}
?>
Trong ví dụ trên, nếu biến $int được đặt thành 0, thì mã ví dụ sẽ hiển thị thông báo số nguyên không hợp lệ. Để khắc phục sự cố này, chúng ta cần kiểm tra rõ ràng giá trị 0, như sau:
Ví dụ
<?php
// Sample integer value
$int = 0;
// Validate sample integer value
if (filter_var($int, FILTER_VALIDATE_INT) === 0 || filter_var($int, FILTER_VALIDATE_INT)) {
echo "The <b>$int</b> is a valid integer";
}else {
echo "The <b>$int</b> is not a valid integer";
}
?>
Xác thực địa chỉ IP
Giúp chúng ta kiểm tra xem giá trị có phải là địa chỉ IP hợp lệ hay không.
Ví dụ
<?php
// Sample IP address
$ip = "173.156.254.113";
// Validate sample IP address
if (filter_var($ip, FILTER_VALIDATE_IP)) {
echo "The <b>$ip</b> is a valid IP address";
} else {
echo "The <b>$ip</b> is not a valid IP address";
}
?>
Bạn cũng có thể áp dụng thêm xác thực cho địa chỉ IP IPV4 hoặc IPV6 bằng cách sử dụng FILTER_FLAG_IPV4 hoặc FILTER_FLAG_IPV6, tương ứng.
Ví dụ
<?php
// Sample IP address
$ip = "173.166.254.113";
// Validate sample IP address
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
echo "The <b>$ip</b> is a valid IPV6 address";
} else {
echo "The <b>$ip</b> is not a valid IPV6 address";
}
?>
Làm sạch và xác thực địa chỉ email
Tiếp theo sẽ chỉ cho bạn cách làm sạch và xác thực địa chỉ e-mail.
Ví dụ
<?php
// Sample email address
$email = "abcde@@example.com";
// Remove all illegal characters from email
$sanitizedEmail = filter_var($email, FILTER_SANITIZE_EMAIL);
// Validate email address
if ($email == $sanitizedEmail && filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "The $email is a valid email address";
} else {
echo "The $email is not a valid email address";
}
?>
Ghi chú: Bộ lọc FILTER_SANITIZE_EMAIL sẽ loại bỏ tất cả các ký tự không hợp lệ khỏi chuỗi địa chỉ email đã cung cấp ngoại trừ các chữ cái, chữ số và !#$%&'*+-=?^_`{|}~@.[].
Làm sạch và xác thực URL
Ví dụ sau đây sẽ chỉ cho bạn cách làm sạch và xác thực một url.
Ví dụ
<?php
// Sample website url
$url = "http:://www.loitraitim.vn";
// Remove all illegal characters from url
$sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL);
// Validate website url
if ($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)) {
echo "The $url is a valid website url";
} else {
echo "The $url is not a valid website url";
}
?>
Ghi chú: Bộ lọc FILTER_SANITIZE_URL sẽ loại bỏ tất cả các ký tự không hợp lệ khỏi chuỗi URL được cung cấp ngoại trừ các chữ cái, chữ số và $-_.+!*'(),{}|\\^~[]`#%";/?:@&=.
Bạn cũng có thể kiểm tra xem một URL có chứa chuỗi truy vấn hay không bằng cách sử dụng FILTER_FLAG_QUERY_REQUIRED, như được hiển thị trong ví dụ dưới:
Ví dụ
<?php
// Sample website url
$url = "http://www.loitraitim.vn?topic=filters";
// Validate website url for query string
if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)) {
echo "The <b>$url</b> contains query string";
} else {
echo "The <b>$url</b> does not contain query string";
}
?>
Xem hướng dẫn về URL HTML để tìm hiểu thêm về các thành phần khác nhau của URL.
Xác thực số nguyên trong một phạm vi
Nó giúp ta xác thực xem giá trị được cung cấp có phải là số nguyên hay không, cũng như liệu nó có nằm trong phạm vi từ 0 đến 100 hay không.
Ví dụ
<?php
// Sample integer value
$int = 79;
// Validate sample integer value
if (filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))) {
echo "The <b>$int</b> is within the range of 0 to 100";
} else {
echo "The <b>$int</b> is not within the range of 0 to 100";
}
?>







