Hướng dẫn what are php filters? - bộ lọc php là gì?

Trong các bài đọc trước, chúng ta đã biết phương pháp xác thực dữ liệu form bằng PHP, chúng ta cũng biết cách sử dụng các hàm xác thực dữ liệu của PHP (như preg_match(), preg_match_all(),

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
0, ...) để kiểm tra dữ liệu đầu vào nhập từ người dùng.

Trong bài đọc này, chúng ta sẽ làm quen thêm một phương pháp để lọc dữ liệu người dùng, đó là sử dụng các chức năng filters trong PHP.filters trong PHP.

Tại sao nên sử dụng filters?


Khi xây dựng một ứng dụng website có tương tác với người dùng, website của chúng ta thường xuyên phải gửi, nhận và xử lý dữ liệu. Các dữ liệu đó có thể là:

  • Người dùng nhập dữ liệu từ một biểu mẫu form
  • Dữ liệu cookie máy chủ nhận lại từ máy tính người dùng
  • Dữ liệu từ dịch vụ máy chủ server
  • Các biến server
  • Dữ liệu nhận từ các kết quả truy vấn cơ sở dữ liệu database
  • ...

Các dữ liệu nhận và gửi nếu không được xử lý xác thực, sẽ dẫn đến các vấn đề bảo mật, ảnh hưởng tới cấu trúc website của chúng ta.

Bằng cách sử dụng các chức năng filter của PHP, chúng ta luôn đảm bảo rằng các dữ liệu gửi và nhận được từ bên ngoài là phù hợp và chính xác cho các quá trình xử lý dữ liệu của website. filter của PHP, chúng ta luôn đảm bảo rằng các dữ liệu gửi và nhận được từ bên ngoài là phù hợp và chính xác cho các quá trình xử lý dữ liệu của website.

Filters extension PHP


PHP cung cấp nhiều chức năng filters cần thiết để chúng ta kiểm tra thông tin đầu vào của người dùng và được thiết kế để giúp xác thực dữ liệu một cách dễ dàng và nhanh chóng hơn.

Ví dụ sau dùng hàm

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
1 để in ra bảng danh sách tên các filters và ID của chúng mà PHP cung cấp cho chúng ta:filters và ID của chúng mà PHP cung cấp cho chúng ta:

<table class="table-bordered">
  <thead>
      <tr>
        <td>Filter Name</td>
        <td>Filter ID</td>
      </tr>
  </thead>
  <?php
  foreach(filter_list() as $id => $filter) {
    echo '<tr><td>'.$filter.'</td><td>'.filter_id($filter).'</td></tr>';
  }
  ?>
</table>

Xem kết quả

Filter Name Filter ID
int 257
boolean 258
float 259
validate_regexp 272
validate_domain 277
validate_url 273
validate_email 274
validate_ip 275
validate_mac 276
string 513
stripped 513
encoded 514
special_chars 515
full_special_chars 522
unsafe_raw 516
email 517
url 518
number_int 519
number_float 520
add_slashes 523
callback 1024

Hàm filter_var() trong PHP


Hàm

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
2 thường được sử dụng để lọc hoặc làm sạch dữ liệu đầu vào từ người dùng

Hàm

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
2 cần cung cấp dữ liệu đầu vào là một biến cần kiểm tra và loại type để kiểm tra biến đó

Ví dụ 1: Dùng hàm

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
2 xóa các thẻ HTML ra khỏi một chuỗi Dùng hàm
<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
2 xóa các thẻ HTML ra khỏi một chuỗi

Ví dụ

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>

Xem kết quả

Filter Name

Filter ID

int sử dụng hàm

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
2 để kiểm tra xem biến $int có phải là một số nguyên hay không. Nếu đúng thì xuất ra màn hình thông báo "Biến $int là số nguyên". Ngược lại thì "Biến $int không phải là số nguyên".

Ví dụ

<?php
$int = 100;

if(!filter_var($int,FILTER_VALIDATE_INT) === false) {
  echo 'Biến $int là số nguyên';
} else {
  echo 'Biến $int không phải là số nguyên';
}
?>

Xem kết quả

Filter Name$int có giá trị là 0 thì kết quả biểu thức trên sẽ là "Biến $int không phải là số nguyên". Để xử lý vấn đề trên, ta điều chỉnh lại đoạn code như sau:

Ví dụ

<?php
$int = 0;

if(filter_var($int,FILTER_VALIDATE_INT) === 0 || !filter_var($int,FILTER_VALIDATE_INT) === false) {
  echo 'Biến $int là số nguyên';
} else {
  echo 'Biến $int không phải là số nguyên';
}
?>

Xem kết quả

Filter Name

Filter ID

int dùng hàm

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
2 để kiểm tra xem một địa chỉ IP có hợp lệ hay không

Ví dụ

<?php
$ip = "127.0.0.1";

if(!filter_var($ip, FILTER_VALIDATE_IP) === false){
  echo 'Biến $ip có địa chỉ IP hợp lệ';
}else{
  echo 'Biến $ip có địa chỉ IP không hợp lệ';
}
?>

Xem kết quả

Filter Name

Filter ID

int Dùng hàm

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
2 để xác thực một địa chỉ IPv6

Ví dụ

<?php
$ip = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";

if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false){
  echo 'Biến $ip là địa chỉ IPv6';
}else{
  echo 'Biến $ip không phải là địa chỉ IPv6';
}
?>

Xem kết quả

Filter Name Dùng hàm

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
2 để xóa tất cả các ký tự không phù hợp khỏi biến $email và kiểm tra xác thực biến $email xem có địa chỉ email hợp lệ hay không

Ví dụ

<?php
$email = "";

// Xóa các ký tự không hợp lệ khỏi biến email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

// Xác thực địa chỉ e-mail
if(!filter_var($email, FILTER_VALIDATE_EMAIL) === false){
  echo 'Biến $email có địa chỉ email hợp lệ.';
}else{
  echo 'Biến $email có địa chỉ email không hợp lệ.';
}
?>

Xem kết quả

Filter Name

Filter ID

int

boolean

float Dùng hàm

<?php
$str = '<h2>Dùng Filter trong PHP.</h2>';
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
2 để xóa tất cả các ký tự không phù hợp ra khỏi URL, sau đó kiểm tra xem biến $url có URL hợp lệ hay không.

Ví dụ

<?php
$url = "https://book-code.com.vn";

// Xóa tất cả các ký tự không phù hợp
$url = filter_var($url, FILTER_SANITIZE_URL);

// Xác thực url
if(!filter_var($url, FILTER_VALIDATE_URL) === false){
  echo 'Biến $url có địa chỉ URL hợp lệ';
}else{
  echo 'Biến $url có địa chỉ URL hợp lệ';
}
?>

Xem kết quả

Filter Name

Filter ID

int

boolean