Bộ lọc PHP
Xác thực dữ liệu = Xác định xem dữ liệu có ở dạng thích hợp hay không.
Sanitizing data = Xóa bất kỳ ký tự bất hợp pháp nào khỏi dữ liệu.
Phần mở rộng Bộ lọc PHP
Bộ lọc PHP được sử dụng để xác thực và làm sạch đầu vào bên ngoài.
Phần mở rộng bộ lọc PHP có nhiều chức năng cần thiết để 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 dễ dàng và nhanh chóng hơn.
Hàm filter_list()
có thể được sử dụng để liệt kê những gì mà phần mở rộng bộ lọc PHP cung cấp:
Thí dụ
<table>
<tr>
<td>Filter Name</td>
<td>Filter ID</td>
</tr>
<?php
foreach (filter_list() as $id =>$filter) {
echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
}
?>
</table>
Tại sao sử dụng bộ lọc?
Nhiều ứng dụng web nhận đầu vào bên ngoài. Đầu vào / dữ liệu bên ngoài có thể là:
- Người dùng nhập từ một biểu mẫu
- Bánh quy
- Dữ liệu dịch vụ web
- Biến máy chủ
- Kết quả truy vấn cơ sở dữ liệu
Bạn phải luôn xác nhận dữ liệu bên ngoài!
Dữ liệu đã gửi không hợp lệ có thể dẫn đến các vấn đề bảo mật và phá vỡ trang web của bạn!
Bằng cách sử dụng các bộ lọc PHP, bạn có thể chắc chắn rằng ứng dụng của mình nhận được đầu vào chính xác!
Hàm filter_var () trong PHP
Hàm filter_var()
vừa xác thực vừa làm sạch dữ liệu.
Hàm filter_var()
lọc một biến duy nhất với một bộ lọc được chỉ định. Nó cần hai phần dữ liệu:
- Biến bạn muốn kiểm tra
- Loại séc để sử dụng
Vệ sinh một chuỗi
Ví dụ sau sử dụng filter_var()
hàm để xóa tất cả các thẻ HTML khỏi một chuỗi:
Thí dụ
<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
Xác thực một số nguyên
Ví dụ sau sử dụng filter_var()
hàm để kiểm tra xem biến $ int có phải là số nguyên hay không. Nếu $ int là một số nguyên, đầu ra của đoạn mã dưới đây sẽ là: "Số nguyên hợp lệ". Nếu $ int không phải là số nguyên, kết quả sẽ là: "Số nguyên không hợp lệ":
Thí dụ
<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Mẹo: filter_var () và Sự cố với 0
Trong ví dụ trên, nếu $ int được đặt thành 0, hàm trên sẽ trả về "Số nguyên không hợp lệ". Để giải quyết vấn đề này, hãy sử dụng mã bên dưới:
Thí dụ
<?php
$int = 0;
if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Xác thực địa chỉ IP
Ví dụ sau sử dụng filter_var()
hàm để kiểm tra xem biến $ ip có phải là địa chỉ IP hợp lệ hay không:
Thí dụ
<?php
$ip = "127.0.0.1";
if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
echo("$ip is a valid IP address");
} else {
echo("$ip is not a valid IP address");
}
?>
Vệ sinh và xác thực địa chỉ email
Ví dụ sau sử dụng filter_var()
hàm để xóa tất cả các ký tự không hợp lệ khỏi biến $ email, sau đó kiểm tra xem đó có phải là địa chỉ email hợp lệ hay không:
Thí dụ
<?php
$email = "[email protected]";
// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
?>
Vệ sinh và xác thực URL
Ví dụ sau sử dụng filter_var()
hàm để xóa tất cả các ký tự không hợp lệ khỏi URL trước tiên, sau đó kiểm tra xem $ url có phải là URL hợp lệ hay không:
Thí dụ
<?php
$url = "https://www.w3schools.com";
// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);
// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
echo("$url is a valid URL");
} else {
echo("$url is not a valid URL");
}
?>
Toàn bộ tài liệu tham khảo bộ lọc PHP
Để có tài liệu tham khảo đầy đủ về tất cả các chức năng bộ lọc, hãy truy cập Tài liệu tham khảo bộ lọc PHP hoàn chỉnh của chúng tôi. Kiểm tra từng bộ lọc để xem những tùy chọn và cờ nào có sẵn.
Tài liệu tham khảo chứa một mô tả ngắn gọn và các ví dụ sử dụng cho từng chức năng!