PHP Cơ bản
PHP Nâng cao
PHP & Cơ sở dữ liệu MySQL
Ví dụ PHP
Tài liệu tham khảo PHP
Quảng cáo

Bộ lọc trong PHP

Trong hướng dẫn này, bạn sẽ học cách làm sạch và xác thực dữ liệu đầu vào của người dùng trong PHP.

Xác thực và làm sạch dữ liệu bằng bộ lọc trong PHP

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, v.v.

Để 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ơ bản của hàm này như sau:

filter_var(variable, filter, options)

Hàm này có ba 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ứ hai là ID của bộ lọc để áp dụng và tham số thứ ba 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 dưới đây.

Làm sạch một chuỗi trong PHP

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 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ẽ giống 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à 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, 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, bạn 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

Ví dụ sau sẽ xác nhận 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.112";
 
// 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ó 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. Đây là một ví dụ:

Ví dụ

<?php
// Sample IP address
$ip = "173.166.254.112";
 
// 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

Ví dụ sau đây 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 = "abcd@@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 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.example.com";
 
// 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 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ụ sau:

Ví dụ

<?php
// Sample website url
$url = "http://www.example.com?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 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

Ví dụ sau sẽ 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 = 75;
 
// 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";
}
?>

Bài viết này đã giúp ích cho bạn?

Advertisements