Hướng dẫn dùng filter_var trong PHP

Nếu trước đây chúng ta sử dụng Regular Expression để kiểm tra định dạng dữ liệu thì rất phức tạp phải không nào? Mình cũng vậy, trước đây mình toàn đi lên mạng kiếm những hàm người ta viết sẵn về sử dụng mà không hề biết ý nghĩa của nó như thế nào :) Nhưng bây giờ thì khác vì trong PHP có một module hỗ trợ việc này khá tốt đó là PHP Filters.

Hướng dẫn dùng filter_var trong PHP

Hướng dẫn dùng filter_var trong PHP

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

PHP Filter là gì?

PHP Filters là một extension được tích hợp sẵn vào thư viện của PHP, đây là một thư viện dùng để kiểm tra tính hợp lệ của dữ liệu (validate data), lọc và xóa đi những ký tự trùng khớp (Sanitizing data). Nếu dịch theo đúng cái tên của nó là bộ lọc trong PHP, như vậy tác dụng của nó cũng chính là ý nghiax của nó. Thông thường chúng ta hay sử dụng PHP Filters để kiểm tra định dạng dữ liệu vì nó tương đối đơn giản. Và trong series này chúng ta sẽ tìm hiểu tổng cộng các loại filter sau:

  • Validate filters
  • Sanitize filters
  • Flag filters
  • Callback filter

Về chi tiết hàm này bạn nên tham khảo tại trang chủ PHP.NET nhe.

Hướng dẫn dùng filter_var trong PHP

Trong bài hướng dẫn tự học lập trình PHP này, bạn sẽ được hướng dẫn về cách làm sạchxác thực dữ liệu đầu vào của người dùng.

Chúng ta sẽ sử dụng các bộ lọc có sẵn trong PHP – PHP Filters

Làm sạch và xác thực dữ liệu đầu vào của người dùng là một trong những nhiệm vụ phổ biến nhất trong khi lập trình web. Để làm cho nhiệm vụ này dễ dàng hơn, PHP cung cấp tiện ích mở rộng filters mà bạn có thể sử dụng để làm sạch hoặc xác thực dữ liệu như địa chỉ email, URL, địa chỉ IP, v.v.

Để xác thực dữ liệu bằng cách sử dụng Filter, 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ố filter options là tùy chọn.

Tham số variable là giá trị được lọc, tham số thứ hai là ID của bộ lọc sẽ á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ướng dẫn dùng filter_var trong PHP
Hướng dẫn làm sạch và xác thực dữ liệu với bộ lọc PHP (PHP Filters)

Hãy cùng xem chức năng filter hoạt động như thế nào qua các ví dụ bên dưới đây.

1. Làm sạch một chuỗi với bộ lọc Filter

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ó:

Chào bạn, hôm nay có gì vui không?";
 
  // Làm sạch và in ra chuỗi comment đã làm sạch
  $sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
  echo $sanitizedComment;
?>

Sau khi làm sạch với bộ lọc với ID bộ lọc là FILTER_SANITIZE_STRING chúng ta có kết quả đầu ra như sau:

Chào bạn, hôm nay có gì vui không?

2. Xác thực giá trị kiểu 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:

$int là số nguyên";
  } else{
      echo "$int không là số nguyên";
  }
?>

Trong ví dụ trên, nếu biến $int gán giá trị 0, đoạn mã sẽ hiển thị thông báo “… không là số nguyên”. Để khắc phục sự cố này, bạn cần kiểm tra rõ ràng giá trị 0, như sau:

$int là số nguyên";
  } else{
      echo "$int không là số nguyên";
  }
?>

3. Xác thực địa chỉ IP

Ví dụ sau sẽ xác thực xem giá trị có phải là địa chỉ IP hợp lệ hay không:

$ip là địa chỉ IP hợp lệ";
  } else {
      echo "$ip không là địa chỉ IP hợp lệ";
  }
?>

Bạn có thể tiếp tục áp dụng xác thực cho các địa chỉ IP IPV4 hoặc IPV6 bằng cách sử dụng các bộ lọc FILTER_FLAG_IPV4 hoặc FILTER_FLAG_IPV6 tương ứng. Dưới đây là một ví dụ:

$ip là địa chỉ IPV6 hợp lệ";
  } else {
      echo "The $ip không là địa chỉ IPV6 hợp lệ";
  }
?>

>> Tham khảo ngay: Khóa học Lập trình PHP Fullstack chỉ trong 3 tháng.

Ví dụ sau đây sẽ cho bạn thấy cách làm sạch và xác thực một url thông qua bộ lọc Fillter của PHP.

$urls là URL hợp lệ";
  } else{
      echo "$urls không là URL hợp lệ";
  }
?>

Bạn cũng có thể kiểm tra xem URL có chứa chuỗi truy vấn hay không bằng cách sử dụng FILTER_FLAG_QUERY_REQUIRED, như trong ví dụ sau:

$url chứa chuỗi truy vấn";
  } else{
      echo "$url không chứa chuỗi truy vấn";
  }
?>

5. Cách Xác thực số nguyên trong một khoảng cho phép

Ví dụ sau sẽ xác thực 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.

 
  array("min_range" => 0,"max_range" => 100)))){
      echo "$int là số nguyên nằm trong khoảng 0 - 100";
  } else{
      echo "$int không là số nguyên nằm trong khoảng 0- 100";
  }
?>

6. Cách xác thực địa chỉ Email hợp lệ sử dụng bộ lọc Filters

Ví dụ sau sử dụng hàm filter_var() với ID bộ lọc là FILTER_SANITIZE_EMAIL để loại bỏ tất cả các ký tự bất hợp pháp từ biến $email, sau đó xác thực xem có đúng là địa chỉ Email hợp lệ hay không với FILTER_VALIDATE_EMAIL:

Tổng kết

Như vậy là bạn đã được hướng dẫn 6 cách làm sạchxác thực dữ liệu đầu vào của người dùng với bộ lọc Filters do PHP cung cấp sẵn.

Để tìm hiểu kỹ hơn về các bộ lọc trong PHP. Bạn vui lòng tìm hiểu thêm tại đây.