Tiện ích mở rộng bộ lọc PHP có nhiều chức năng cần thiết để kiểm tra đầ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 hơn
Hàm filter_list[]
có thể được sử dụng để liệt kê những gì tiện ích mở rộng bộ lọc PHP cung cấp
Thí dụ
foreach [filter_list[] dưới dạng $id =>$filter] {
tiếng vang '';
}
?>
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ể được
- 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 thực dữ liệu bên ngoài
Dữ liệu đã gửi không hợp lệ có thể dẫn đến sự cố 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 thông tin đầu vào chính xác
PHP hàm filter_var[]
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 bộ lọc được chỉ định. Phải mất hai phần dữ liệu
- Biến bạn muốn kiểm tra
- Loại séc sử dụng
Vệ sinh chuỗi
Ví dụ sau sử dụng hàm filter_var[]
để xóa tất cả các thẻ HTML khỏi một chuỗi
Thí dụ
$str = "
Chào thế giới. “;$newstr = filter_var[$str, FILTER_SANITIZE_STRING];
tiếng vang $newstr;
?>Tự mình thử »
Xác thực một số nguyên
Ví dụ sau sử dụng hàm filter_var[]
để kiểm tra xem biến $int có phải là số nguyên không. Nếu $int là một số nguyên, đầu ra của mã bên dưới sẽ là. "Số nguyên hợp lệ". Nếu $int không phải là số nguyên, đầu ra sẽ là. "Số nguyên không hợp lệ"
Thí dụ
$int = 100;
nếu [. filter_var[$int, FILTER_VALIDATE_INT] === false] {
echo["Số nguyên hợp lệ"];
} khác {
echo["Số nguyên không hợp lệ"];
}
?>
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ụ
$int = 0;
nếu [filter_var[$int, FILTER_VALIDATE_INT] === 0. . filter_var[$int, FILTER_VALIDATE_INT] === false] {
echo["Số nguyên hợp lệ"];
} khác {
echo["Số nguyên không hợp lệ"];
}
?>
Xác thực địa chỉ IP
Ví dụ sau sử dụng hàm filter_var[]
để kiểm tra xem biến $ip có phải là địa chỉ IP hợp lệ không
Thí dụ
$ip = "127. 0. 0. 1";
nếu [. filter_var[$ip, FILTER_VALIDATE_IP] === sai] {
echo["$ip là địa chỉ IP hợp lệ"];
} khác {
echo["$ip không phải là địa chỉ IP hợp lệ"];
}
?>
Vệ sinh và xác thực địa chỉ email
Ví dụ sau sử dụng hàm filter_var[]
để xóa tất cả các ký tự không hợp lệ khỏi biến $email trước, sau đó kiểm tra xem đó có phải là địa chỉ email hợp lệ không
Thí dụ
$email = "john. doe@ví dụ. com";
// Xóa tất cả các ký tự không hợp lệ khỏi email
$email = filter_var[$email, FILTER_SANITIZE_EMAIL];
// Xác thực thư điện tử
nếu [. filter_var[$email, FILTER_VALIDATE_EMAIL] === false] {
echo["$email là địa chỉ email hợp lệ"];
} khác {
echo["$email không phải là địa chỉ email hợp lệ"];
}
?>
Vệ sinh và xác thực một URL
Ví dụ sau đây sử dụng hàm filter_var[]
để xóa tất cả các ký tự không hợp lệ khỏi một URL, sau đó kiểm tra xem $url có phải là một URL hợp lệ không
Thí dụ
$url = "https. //www. w3schools. com";
// Xóa tất cả các ký tự không hợp lệ khỏi một url
$url = filter_var[$url, FILTER_SANITIZE_URL];
// Xác thực url
nếu [. filter_var[$url, FILTER_VALIDATE_URL] === false] {
echo["$url là URL hợp lệ"];
} khác {
echo["$url không phải là URL hợp lệ"];
}
?>
Toàn bộ tài liệu tham khảo bộ lọc PHP
Để có tham khảo đầy đủ về tất cả các hàm 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 khả dụng
Tôi càng bắt đầu cố gắng sử dụng các tiêu chuẩn mã hóa PSR-2 và các công cụ như GrumPHP [và những công cụ liên quan đến nó], tôi càng thấy rằng chất lượng mã tôi viết có thể được cải thiện đáng kể theo những cách nhỏ
Và tôi không có ý nói mâu thuẫn. Ý tôi là, ý tưởng có một thứ gì đó được cải thiện “đáng kể” theo một cách “nhỏ nhặt” không thực sự vui nhộn, phải không?
Nhưng hãy nghe tôi nói
Hãy tưởng tượng rằng bạn có thể viết mã rõ ràng, dễ đọc, có thể bảo trì bằng cách sử dụng các tiêu chuẩn mã hóa không chỉ hiện đại mà còn được tích hợp vào PHP, hoạt động độc đáo với WordPress và điều đó dễ đọc hơn một số cách khác mà chúng tôi có thể đã thực hiện trong
Bạn sẽ không quan tâm chứ?
Vệ sinh dữ liệu bài viết
Lấy ví dụ, ý tưởng về sự cần thiết phải vệ sinh dữ liệu bài đăng trong WordPress. Nghĩa là, thông tin được gửi đến máy chủ thông qua yêu cầu POST, được chứa trong $_POST superglobal và phải được làm sạch trước khi thực hiện bất kỳ công việc nào trên đó
Chắc chắn rồi, WordPress cung cấp một vài hàm trợ giúp cho việc này – và chúng rất hữu ích – nhưng PHP cũng cung cấp một số
Tôi sẽ cung cấp đầy đủ thông tin chính bên dưới trong một chức năng mà bạn có thể sử dụng lại trong mã của mình. Nhưng trước tiên, lưu ý rằng tôi sẽ hung hăng. Bạn có thể không cần mọi thứ mà tôi sắp trình bày
Nghĩa là đoạn mã bạn sắp xem sẽ thực hiện như sau
- truy xuất một biến cho siêu toàn cầu $_POST,
- kiểm tra mã hóa không hợp lệ,
- mã hóa các thực thể khác nhau, loại bỏ tất cả các thẻ, xóa ngắt dòng, tab, khoảng trắng, v.v.
- trích dẫn một chuỗi được trích dẫn,
- xóa các thẻ HTML và thẻ PHP khỏi một chuỗi
Như tôi đã nói, không phải tất cả những điều này đều có thể cần thiết và có nhiều cách khác để xử lý một số điều này tùy thuộc vào cách bạn muốn quản lý dữ liệu của mình [ví dụ: xem wp_kses]
Tuy nhiên, đôi khi bạn có thể có một trang cài đặt mà bạn muốn quản lý trước khi ghi dữ liệu vào cơ sở dữ liệu một cách mạnh mẽ.
Xem mã trên Gist
, hàm này được sử dụng bằng cách chuyển thông tin tìm thấy trong siêu toàn cục $_POST. Sau đó, nó được làm sạch mạnh mẽ bằng cách sử dụng chiến lược ở trên và trở về trạng thái được vệ sinh sạch sẽ nhất có thể.
Như tôi đã nói, điều này có thể được sửa đổi để phù hợp với bất kỳ mục đích sử dụng nào bạn cần, nhưng nếu bạn đang tìm kiếm một trong những cách dễ nhất và tích cực nhất để làm sạch đầu vào từ người dùng, thì chức năng này có thể hữu ích trong nỗ lực của bạn