Làm sạch và định dạng dữ liệu trong PHP bằng Gói biến áp

Các thành phần xác thực của Laravel cung cấp năng lượng cho gói Transformer PHP, gói này sử dụng cú pháp giống như xác thực quen thuộc của Laravel để chuyển đổi dữ liệu bằng cách sử dụng các hàm, lớp có thể gọi được, v.v.

_10

Các quy tắc biến áp dựa trên chuỗi sẽ rõ ràng đối với những người quen thuộc với API xác thực của Laravel. Ngoài ra, như đã thấy trong đoạn trích, gói này có cú pháp "có thể xâu chuỗi" [

$data = santize[$_POST, $fields];

Code language: PHP [php]
2] có thể xâu chuỗi các cuộc gọi bổ sung trên một phần dữ liệu

Gói này hỗ trợ dữ liệu mảng lồng nhau bằng ký hiệu dấu chấm, đầu vào ký tự đại diện [áp dụng hàm trên các khóa khớp với mẫu ký tự đại diện], bao đóng, lớp triển khai giao diện

$data = santize[$_POST, $fields];

Code language: PHP [php]
3 được cung cấp, v.v.

Trên GitHub, bạn có thể xem mã nguồn, nhận hướng dẫn cài đặt chi tiết và tìm hiểu thêm về gói này

Transformer là gói PHP để khử trùng và định dạng dữ liệu được cung cấp bởi các thành phần xác thực của Laravel. Gói này sử dụng cú pháp giống như xác thực Laravel quen thuộc để chuyển đổi dữ liệu bằng cách sử dụng các hàm, lớp có thể gọi được, v.v.

1use Closure;

2 

3// example available functions at runtime:

4function to_carbon[$value]

5{

6 return new Carbon\Carbon[$value];

7}

8 

9function only_numbers[$value]

10{

11 return preg_replace["/[^0-9]/",'',$value];

12}

13 

14$input = [

15 'first_name' => ' jim ',

16 'last_name' => ' thompson',

17 'phone_number' => '123-456-7890',

18 'date_of_birth' => "1991-05-01",

19];

20 

21[new DataTransformer[$input, [

22 'first_name' => 'trim|ucfirst',

23 'last_name' => 'trim|ucfirst',

24 'phone_number' => 'only_numbers',

25 'date_of_birth' => 'to_carbon|->format:m/d/y',

26]]]->transform[];

27 

28// Returns:

29// [

30// "first_name" => "Jim",

31// "last_name" => "Thompson",

32// "phone_number" => "1234567890",

33// "date_of_birth" => "05/01/91",

34// ]

Những người quen thuộc với API xác thực của Laravel sẽ nhận thấy các quy tắc biến áp dựa trên chuỗi. Ngoài ra, như đã thấy trong đoạn trích, gói này có cú pháp "có thể xâu chuỗi" [

$data = santize[$_POST, $fields];

Code language: PHP [php]
2] có thể xâu chuỗi các cuộc gọi bổ sung trên một phần dữ liệu

Bạn cũng có thể chuyển đổi dữ liệu bằng cách sử dụng các bao đóng hoặc một lớp triển khai giao diện

$data = santize[$_POST, $fields];

Code language: PHP [php]
3 được cung cấp. Ngoài ra, gói này hỗ trợ dữ liệu mảng lồng nhau bằng cách sử dụng ký hiệu dấu chấm, đầu vào ký tự đại diện [áp dụng các chức năng trên các phím khớp với mẫu ký tự đại diện], v.v.

Bạn có thể tìm hiểu thêm về gói này, nhận hướng dẫn cài đặt đầy đủ và xem mã nguồn trên GitHub

Transformer là gói PHP để khử trùng và định dạng dữ liệu được cung cấp bởi các thành phần xác thực của Laravel

Bài viết Sanitize and Format Data in PHP with the Transformer Package appeared first on Laravel News

Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách phát triển một hàm PHP

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9 có thể tái sử dụng để làm sạch đầu vào

Giới thiệu về vệ sinh đầu vào

Trước khi xử lý dữ liệu từ các nguồn không đáng tin cậy, chẳng hạn như yêu cầu HTTP

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
0 hoặc

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
1, bạn phải luôn khử trùng dữ liệu đó trước

Làm sạch đầu vào có nghĩa là xóa các ký tự không hợp lệ bằng các kỹ thuật xóa, thay thế, mã hóa hoặc thoát

PHP cung cấp một danh sách các bộ lọc làm sạch mà bạn có thể sử dụng để làm sạch đầu vào một cách hiệu quả. Các chức năng sau sử dụng các bộ lọc này để khử trùng đầu vào

  • bộ lọc_input[]
  • bộ lọc_var[]
  • filter_input_array[]
  • filter_var_array[]

Trong hướng dẫn này, chúng ta sẽ tạo một hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9 có thể tái sử dụng để làm sạch các đầu vào theo cách biểu cảm hơn

Định nghĩa hàm sanitize[]

Giả sử bạn có các trường sau trong biến

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
3 và muốn làm sạch chúng

  • Tên
  • e-mail
  • tuổi tác
  • trọng lượng
  • trang chủ

Để làm điều đó, bạn có thể định nghĩa một hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9 và gọi nó như sau

$data = santize[$_POST, $fields];

Code language: PHP [php]

Hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9 sẽ trông như thế này

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]

Hàm có hai tham số

  • Tham số

    $fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

    Code language: PHP [php]
    6 là một mảng kết hợp. Nó có thể là

    $fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

    Code language: PHP [php]
    3,

    $fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

    Code language: PHP [php]
    8 hoặc một mảng kết hợp thông thường
  • Tham số

    $fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

    Code language: PHP [php]
    9 là một mảng chỉ định danh sách các trường có quy tắc

Hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9 trả về một mảng chứa dữ liệu đã được làm sạch

The

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
9 phải là một mảng kết hợp trong đó khóa là tên trường và giá trị là quy tắc cho trường đó. Ví dụ

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]

Lưu ý rằng

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
72 có nghĩa là một chuỗi các chuỗi

Để vệ sinh các lĩnh vực này

  • Đầu tiên, lặp lại

    $fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

    Code language: PHP [php]
    9 và sử dụng bộ lọc tương ứng cho từng. Ví dụ: nếu quy tắc là

    function sanitize[array $inputs, array $fields] : array

    Code language: PHP [php]
    74, bộ lọc sẽ là

    function sanitize[array $inputs, array $fields] : array

    Code language: PHP [php]
    75
  • Thứ hai, vệ sinh trường bằng bộ lọc

Để có bộ lọc dựa trên quy tắc của một trường, bạn có thể xác định ánh xạ giữa các quy tắc với các bộ lọc như thế này

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
7

Ví dụ: phần sau trả về bộ lọc của quy tắc

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
74

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
3

Để dọn dẹp nhiều trường cùng một lúc, bạn có thể sử dụng hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
77

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
5

Tham số đầu tiên của hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
77 là một mảng các biến để lọc. Và tham số thứ hai là một mảng các bộ lọc. Ví dụ, nó sẽ trông như thế này

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
7

Vì vậy, bạn cần trả về

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
79 này từ các mảng

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
9 và

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
31. Để làm điều đó, bạn có thể sử dụng chức năng

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
32 như thế này

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
2

Sau đây là chức năng

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
4

Làm cho hàm sanitize[] linh hoạt hơn

Hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9 sử dụng hằng số

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
31. Để linh hoạt hơn, bạn có thể thêm một tham số và đặt giá trị mặc định của nó thành hằng số

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
31 như thế này

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
8

Ngoài ra, bạn có thể muốn làm sạch các trường trong

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
6 bằng cách sử dụng một bộ lọc e. g. ,

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
75

Để làm điều đó, bạn có thể

  • Đầu tiên, đặt tham số

    $fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

    Code language: PHP [php]
    9 là tùy chọn và đặt giá trị mặc định của nó thành một mảng trống

    $fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

    Code language: PHP [php]
    50
  • Thứ hai, thêm tham số bộ lọc mặc định
  • Thứ ba, nếu mảng

    $fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

    Code language: PHP [php]
    51 trống, hãy sử dụng bộ lọc mặc định

Hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9 sẽ giống như sau

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
0

Xóa khoảng trắng của chuỗi

Để xóa khoảng trắng của chuỗi, bạn sử dụng hàm

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
53. Và để loại bỏ các khoảng trắng của một mảng chuỗi các bạn sử dụng hàm

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
32 với hàm

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
53

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
1

Tuy nhiên,

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
6 có thể chứa các mục không phải là chuỗi. Để chỉ cắt mục chuỗi, bạn có thể sử dụng hàm

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
57 để kiểm tra xem mục đó có phải là chuỗi hay không trước khi cắt mục đó

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
2

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
6 có thể chứa một mục là một mảng các chuỗi. Ví dụ

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
3

Để cắt chuỗi trong mục

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
59, bạn cần sử dụng hàm đệ quy

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
4

Gọi array_trim[] từ hàm sanitize[]

Để gọi hàm

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
70 từ hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9

  • Đầu tiên, thêm một tham số mới có tên là

    $fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

    Code language: PHP [php]
    72 vào hàm

    function sanitize[array $inputs, array $fields] : array

    Code language: PHP [php]
    9 và đặt giá trị mặc định của nó thành true
  • Thứ hai, gọi

    $fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

    Code language: PHP [php]
    70 nếu tham số $trim là true

Phần sau đây hiển thị hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9 được cập nhật

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
5

Đặt nó tất cả cùng nhau

Phần sau hiển thị tệp

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
76 hoàn chỉnh với các hàm

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
31,

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
70 và

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
6

Sử dụng chức năng sanitize[]

Phần sau đây trình bày cách sử dụng hàm

function sanitize[array $inputs, array $fields] : array

Code language: PHP [php]
9 để làm sạch dữ liệu trong

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
21 bằng cách sử dụng các quy tắc làm sạch được chỉ định trong

$fields = [ 'name' => 'string', 'email' => 'email', 'age' => 'int', 'weight' => 'float', 'github' => 'url', 'hobbies' => 'string[]' ];

Code language: PHP [php]
9

Làm cách nào để sử dụng filter_var[] để khử trùng chuỗi trong PHP?

Ví dụ: nếu bạn muốn sử dụng filter_var [] để khử trùng chuỗi $ với FILTER_SANITIZE_STRING và chuyển vào FILTER_FLAG_STRIP_HIGH và FILTER_FLAG_STRIP_LOW, chỉ cần gọi nó như thế này. $string = filter_var [$string, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH. FILTER_FLAG_STRIP_LOW];

Bộ lọc mặc định cho dữ liệu thô không an toàn trong PHP là gì?

Trong trường hợp đó, PHP sẽ sử dụng bộ lọc mặc định chắc chắn là FILTER_UNSAFE_RAW và người ta có thể thấy rằng dữ liệu thô không an toàn sau đó có thể được chuyển lên máy chủ, điều này có thể giúp tin tặc dễ dàng hơn. Mặc dù có vẻ là một cách thực hành tốt để đặt giá trị mặc định trong php. ini, bạn không nên cho rằng máy chủ của người dùng cuối có cùng cài đặt với máy chủ của bạn

Địa chỉ email [B] đã được làm sạch này có hợp lệ không?

[b] địa chỉ email đã được làm sạch này được coi là không hợp lệ. [c] địa chỉ email đã được làm sạch này được coi là hợp lệ. Trước. [không có thật @ ví dụ. tổ chức] Sau. không có thật @ ví dụ. tổ chức

Chủ Đề