Hướng dẫn filter_input trong php

Thành phần InputFilter được sử dụng đồng thời 2 chức năng lọc và kiểm tra dữ liệu phù hợp [Filter và Validator] đặc biệt áp dụng cho gửi dữ liệu [GET, POST] của FORM

zend-inputfilter là một thư viện giúp cho việc lọc kết hợp xác thực dữ liệu, nó là thử viện xây dựng trên cơ sở kết hợp làm việc chung giữa Validator và Filter,

Nếu ứng dụng chưa tích hợp inputfilter thì chạy lệnh composer sau đề tích hợp vào

composer require zendframework/zend-inputfilter

  • Input
  • InputFilter

Input

ZendInputFilterInput , nó làm hai nhiệm vụ là lọc và xác thực [Filter và Validator] dữ liệu, một đối tượng Input có chứa các Validator gọi là ValidatorChain và các Filter gọi là FilterChain.

Đang xem: Filter_input trong php

Khởi tạo một Input bằng đoạn code sau:

$input = new endInputFilterInput[“namevar”];

namevar: key của biến cần kiểm tra [ví dụ email, id …].

Mỗi đối tượng Input đều có:

FilterChain lấy ra bằng hàm getFilterChain[]: nó chứa các chứa các Fillter, được gắn vào bằng hàm attachByName[$filter], attach[$filter]. ValidatorChain lấy ra bằng hàm getValidatorChain[]: nó chứa các Validator được gắn vào nó bằng attachByName[$filter], attach[$filter]

Sau khi khởi tạo xong, thì tiến hành gắn các Filter và Validator vào nó bằng cách trên

Nếu muốn sử dụng [không đưa vào Inputfilter] thì cần lọc và xác thực dữ liệu bằng Input dùng cách sau:

setValue[$value] : thiết lập giá trị cần lọc, kiểm tra isValid[]: xem dữ liệu $value có phù hợp getMessages[]: lấy mảng chứa thông báo nếu dữ liệu không phù hợp getValue[] lấy dữ liệu sau khi qua bộ lọc trong input

Ví dụ tạo ra một Input sẽ dùng kiểm tra cho name: password của FORM với điều kiện cắt bỏ khoảng trắng đầu đuôi, và phải dài tối thiểu 8 ký tự.

Xem thêm: Debugging In Php – Php Log Files: Tips For Developers

//Khởi tạo một input có tên password $password = new endInputFilterInput[“password”]; //Gắn các Filter vào $password->getFilterChain[] ->attach[new endFilterStringTrim[]]; //Gắn các Valitor vào $password->getValidatorChain[] ->attach[new endValidatorStringLength[8]]; //Thiết lập dữ liệu, lọc và xác thực $password->setValue[” 3
“]; var_dump[$password->isValid[]]; var_dump[$password->getMessages[]]; var_dump[$password->getValue[]];

InputFilter

ZendInputFilterInputFilter đơn giản nó chứa nhiều Input ở trên, được sử dụng để Filter và Validator mảng dữ liệu gửi đến. Mỗi mảng dữ liệu là mảng dạng array[“key”=>$value]

InputFilter sẽ tìm Input có tên là key và dùng Input đó để Filter và Validate $value.

Xem thêm: Download Tài Liệu, Giáo Trình Php Hướng Đối Tượng Trong Php Online

Để chuyển dữ liệu cho InputFilter bạn sử dụng hàm setData[], dư liệu ở dạng bảng thông thường nó đến từ FORM thông qua POST.

Ví dụ:

use ZendInputFilterInputFilter; use ZendInputFilterInput; use ZendValidator; //Tạo các Input $email = new Input[“email”]; $email->getValidatorChain[] ->attach[new ValidatorEmailAddress[]]; $password = new Input[“password”]; $password->getValidatorChain[] ->attach[new ValidatorStringLength[8]]; $inputFilter = new InputFilter[]; //Gắn các Input vào Inputfiler $inputFilter->add[$email]; $inputFilter->add[$password]; //Thiết lập kiểm tra mảng dữ liệu $_POST, //Nó sẽ lấy các key và dữ liệu có tên: email, password để //lọc và kiểm tra theo tên input tương ứng $inputFilter->setData[$_POST]; if [$inputFilter->isValid[]] else }

Trong phương thức add[] của InputFilter bạn cũng có thể sử dụng dữ liệu mảng để diễn tác các Input thêm vào, chức năng factory sẽ nhận biết và tự khởi tạo và thêm vào các Input phù hợp

Cú pháp cơ bản thêm một Input

$inputFilter->add[ < "name" => “nameInput”, //email, password, user … “filters” => < //Các filter trong Input < "name" => “NameFilter”, //Tên filter như StringTrim … “options” => < //... các thiết lập cho filter này > >, //…Các filter khác >, “validators” => < //Các validator trong Input < "name" => “NameValidator”, //Tên validator như StringLength … “options” => < //... các thiết lập cho validator này > >, //…Các validator khác >, //../ > ];

Ví dụ: [đây là cách hay dùng với FORM]

use ZendInputFilterInputFilter; $filter = new InputFilter[]; // Adding a single input $filter->add[< "name" => “username”, “required” => true, “validators” => < < "name" => “not_empty”, >, < "name" => “string_length”, “options” => < "min" => 5 >, >, >, >]; // Adding another input filter what also contains a single input. Merging both. $filter->add[< "type" => “ZendInputFilterInputFilter”, “password” => < "name" => “password”, “required” => true, “validators” => < < "name" => “not_empty”, >, < "name" => “string_length”, “options” => < "min" => 8 >, >, >, >, >]; //Đưa InputFilter vào form, để lọc và xác thực dữ liệu //theo tên phần từ FORM $form->setInputFilter[$inputFilter];

Chủ Đề