Nên dùng hàm Filter_var() vào việc gì?

Hàm này giúp dễ dàng xác thực địa chỉ email, URL [nếu không sẽ yêu cầu viết một số biểu thức chính quy để tự thực hiện], cũng như hữu ích cho các mục đích như kiểm tra xem giá trị trong một biến là số nguyên hay có số thập phân

Khi sử dụng chức năng này để lọc, nó sẽ trả về dữ liệu đã lọc hoặc trả về giá trị sai nếu bộ lọc không thành công, giúp sử dụng thuận tiện trong kiểm tra if

Ở dạng cơ bản nhất, cần có 2 đối số, một biến chứa giá trị bạn muốn xác thực và ID của bộ lọc sẽ áp dụng

// Email validation:
if [filter_var[$email_address, FILTER_VALIDATE_EMAIL]] {
	...
}

// URL validation:
if [filter_var[$url, FILTER_VALIDATE_URL]] {
	...
}

// Validating a product ID [must be an integer]:
if [filter_var[$product_id, FILTER_VALIDATE_INT]] {
	...
}

// Validating price [a decimal value, like 10 or 20.50]:
if [filter_var[$price, FILTER_VALIDATE_FLOAT]] {
	...
}

FILTER_VALIDATE_INT thường được sử dụng với đối số tùy chọn thứ ba, để chỉ định số nguyên tối thiểu và/hoặc số nguyên tối đa được phép, dưới dạng một mảng đối số

if [filter_var[$product_id, FILTER_VALIDATE_INT, array['min_range' => 1]]] {
	...
}

// Or like so:
if [filter_var[$category_name_length, FILTER_VALIDATE_INT, array['min_range' => 1, 'max_range' => 250]]] {
	...
}

Bây giờ tôi sẽ chỉ cho bạn một ví dụ về cách sử dụng hàm filter_var[] trong tập lệnh sản xuất

Hãy xác thực trường địa chỉ email của biểu mẫu HTML được gửi trên trang 'Liên hệ với chúng tôi'

$errors = []; // An empty array for recording errors.

...

if [isset[$_POST['email_address']] && filter_var[$_POST['email_address'], FILTER_VALIDATE_EMAIL]] {

	$email = $_POST['email_address'];

} else {

	$errors['email_address'] = 'Please enter a valid email address!';

}
...

if [empty[$errors]] {

	// Do something with the $email variable...

} else {

	// Use the $errors array which indexes correspond to input field names,
	// and their associated values are textual error messages to report a problem[s].
	...

}

Như bạn có thể thấy kiểm tra bổ sung isset[$_POST['email_address']] đứng trước hàm filter_var[], nó ở đó vì trong các tình huống thực tế, biểu mẫu của bạn sẽ không chỉ được gửi bởi con người mà còn bởi tất cả các loại chương trình tự động

Việc cung cấp giá trị "không được đặt" vào filter_var[] sẽ tạo ra lỗi PHP, đó là lý do tại sao đoạn mã đã cho đảm bảo rằng giá trị thực sự là "được đặt" và chỉ sau đó xác thực giá trị đó

Nếu bạn không bao gồm phần kiểm tra bổ sung này và tự gửi biểu mẫu trong trình duyệt của mình theo cách thông thường, thì có lẽ bạn sẽ không bao giờ thấy thông báo lỗi như vậy, vì việc không điền vào trường nhập liệu sẽ gửi một chuỗi trống đến máy chủ mà filter_var[

Cách bạn có thể thấy những lỗi đó xảy ra trong cuộc sống thực khi gửi biểu mẫu kỳ lạ bằng phần mềm tự động là xem nhật ký lỗi hoặc qua thông báo email nếu trang web có trình xử lý lỗi tùy chỉnh sẽ gửi thông báo qua email khi xảy ra lỗi

Một ví dụ "sẵn sàng sản xuất" khác về việc sử dụng hàm filter_var[], kiểm tra xem product_id có lớn hơn hoặc bằng 1 không

if[isset[$_POST['product_id']]
	&& filter_var[$_POST['product_id'], FILTER_VALIDATE_INT, array['min_range' => 1]]] {
	...
}

⚠ Thận trọng khi bạn cần kiểm tra xem một giá trị có lớn hơn hoặc bằng 0 hay không, giả sử số lượng sản phẩm trong giỏ hàng, nội dung của điều kiện if cần được viết với kiểm tra rõ ràng để không sai

if [filter_var[$quantity, FILTER_VALIDATE_INT, array['min_range' => 0]] !== false] {
	...
}
	

Vì 0 là một giá trị hợp lệ trong trường hợp này, nên hàm filter_var[] sẽ trả về giá trị đó và kiểm tra nếu đơn giản như thế này. nếu [filter_var[. ]] sẽ hiểu nó là sai. Đó là lý do tại sao bạn cần nói rõ ràng nếu bạn chỉ kiểm tra đối với giá trị boolean không sai

Một cách sử dụng khác của hàm filter_var[] là làm sạch dữ liệu

Larry Ulman, tác giả của một vài cuốn sách về PHP định nghĩa vệ sinh là.
Sanitization là một quá trình thay đổi dữ liệu bằng cách loại bỏ các ký tự không phù hợp để làm cho dữ liệu đáp ứng mong đợi

Để thực hiện vệ sinh với filter_var[], bạn cần sử dụng một trong các bộ lọc vệ sinh của nó, làm đối số thứ hai. Đây là một vài trong số họ

Chuỗi mã hóa URL FILTER_SANITIZE_ENCODED, tùy chọn tách hoặc mã hóa các ký tự đặc biệt. FILTER_SANITIZE_EMAILXóa tất cả ký tự ngoại trừ chữ cái, chữ số và. #$%&'*+-=?^_`{. }~@. []. FILTER_SANITIZE_SPECIAL_CHARSHTML-escape '"& và các ký tự có giá trị ASCII nhỏ hơn 32, tùy ý tách hoặc mã hóa các ký tự đặc biệt khácFILTER_SANITIZE_STRINGXoá thẻ, tùy ý tách hoặc mã hóa các ký tự đặc biệt

Có thể tìm thấy danh sách đầy đủ các bộ lọc vệ sinh trên trang web chính thức của PHP. php. net/thủ công/en/bộ lọc. bộ lọc. vệ sinh. php

Ví dụ: để xuất tiêu đề, xóa mọi thẻ html có thể có trong dữ liệu được trả về từ cơ sở dữ liệu, bạn có thể sử dụng dòng sau

Việc sử dụng phương thức Filter_var là gì?

Hàm filter_var[] lọc một biến bằng bộ lọc đã chỉ định. Chức năng này được sử dụng để xác thực và làm sạch dữ liệu . Thông số. Hàm này chấp nhận ba tham số và được mô tả bên dưới. var. Đó là trường bắt buộc.

Làm cách nào để sử dụng Filter_input trong PHP?

Filter_input[] là một hàm sẵn có trong PHP được sử dụng để lấy một biến bên ngoài cụ thể theo tên và lọc nó. Hàm này được sử dụng để xác thực các biến từ các nguồn không an toàn, chẳng hạn như đầu vào của người dùng từ biểu mẫu. .
INPUT_GET
INPUT_POST
INPUT_COOKIE
INPUT_SERVER
INPUT_ENV

Làm cách nào để lọc chuỗi trong PHP?

Làm cách nào để lọc hoặc làm sạch các số từ chuỗi trong PHP? .
Phương pháp 1. Sử dụng hàm filter_var[]
Phương pháp 2. Sử dụng hàm preg_replace[]
Phương pháp 3. Sử dụng chức năng preg_match_all[]

Làm cách nào để khử trùng một URL trong PHP?

Chúng tôi có thể làm sạch URL bằng cách sử dụng FILTER_SANITIZE_URL . Hàm này xóa tất cả các ký tự ngoại trừ chữ cái, chữ số và $-_. +. *'[],{}. \\^~[]`#%";/?. @&=.

Chủ Đề