Hướng dẫn explain the concept of deserialization with example in php - giải thích khái niệm deserialization với ví dụ trong php

Giới thiệu các lỗ hổng tiêm đối tượng PHP

PHP: Bộ tiền xử lý siêu văn bản | Logo của Colin Viebrock trên php.net

Tuần tự hóa là khi một đối tượng trong ngôn ngữ lập trình [giả sử, một đối tượng Java hoặc PHP] được chuyển đổi thành một định dạng có thể được lưu trữ hoặc truyền. Trong khi đó, việc khử deserialization đề cập đến điều ngược lại: đó là khi đối tượng tuần tự được đọc từ một tệp hoặc mạng và chuyển đổi trở lại thành một đối tượng.

Ví dụ 6-3. Tệp log.inc

17 năm trước

18 năm trước

Barbuj tại Nospam dot yahoo dot com ¶Generates a storable representation of a value

15 năm trước

Frost tại Easycast Dot Ru ¶[mixed $value]: string

Andrew B ¶

$value3unserialize[].

Thông số

value

Giá trị được tuần tự hóa. serialize [] xử lý tất cả các loại, ngoại trừ loại tài nguyên và một số đối tượng [xem ghi chú bên dưới]. Bạn thậm chí có thể tuần tự hóa các mảng có chứa các tham chiếu đến chính nó. Tài liệu tham khảo tròn bên trong mảng/đối tượng bạn đang tuần tự cũng sẽ được lưu trữ. Bất kỳ tài liệu tham khảo nào khác sẽ bị mất.serialize[] handles all types, except the resource-type and some objects [see note below]. You can even serialize[] arrays that contain references to itself. Circular references inside the array/object you are serializing will also be stored. Any other reference will be lost.

Khi các đối tượng tuần tự hóa, PHP sẽ cố gắng gọi các hàm thành viên __serialize [] hoặc __s ngủ [] trước khi tuần tự hóa. Điều này là để cho phép đối tượng thực hiện bất kỳ việc làm sạch vào phút cuối, vv trước khi được tuần tự hóa. Tương tự như vậy, khi đối tượng được khôi phục bằng cách sử dụng hàm thành viên unserialize [], hàm thành viên __unserialize [] hoặc __wakeup [] được gọi.unserialize[] the __unserialize[] or __wakeup[] member function is called.

Ghi chú::

Các thành viên riêng của đối tượng có tên lớp được chuẩn bị cho tên thành viên; Các thành viên được bảo vệ có một '*' được chuẩn bị cho tên thành viên. Các giá trị được chuẩn bị này có byte null ở hai bên.

Trả về giá trị

Trả về một chuỗi chứa biểu diễn dòng byte của value có thể được lưu trữ ở bất cứ đâu.

Lưu ý rằng đây là một chuỗi nhị phân có thể bao gồm các byte null và cần được lưu trữ và xử lý như vậy. Ví dụ: đầu ra serialize [] thường được lưu trữ trong trường blob trong cơ sở dữ liệu, thay vì trường char hoặc văn bản.serialize[] output should generally be stored in a BLOB field in a database, rather than a CHAR or TEXT field.

Ví dụ

Ví dụ #1 serialize [] Ví dụserialize[] example

Ghi chú

Ghi chú::

Các thành viên riêng của đối tượng có tên lớp được chuẩn bị cho tên thành viên; Các thành viên được bảo vệ có một '*' được chuẩn bị cho tên thành viên. Các giá trị được chuẩn bị này có byte null ở hai bên.Serializable interface or the magic __serialize[]/__unserialize[] or __sleep[]/__wakeup[] methods. If an internal class does not fulfill any of those requirements, it cannot reliably be serialized.

Trả về giá trị

Trả về một chuỗi chứa biểu diễn dòng byte của value có thể được lưu trữ ở bất cứ đâu.

Lưu ý rằng đây là một chuỗi nhị phân có thể bao gồm các byte null và cần được lưu trữ và xử lý như vậy. Ví dụ: đầu ra serialize [] thường được lưu trữ trong trường blob trong cơ sở dữ liệu, thay vì trường char hoặc văn bản.serialize[] serializes objects, the leading backslash is not included in the class name of namespaced classes for maximum compatibility.

Ví dụ

  • Ví dụ #1 serialize [] Ví dụ
  • Ghi chú
  • Lưu ý rằng nhiều đối tượng PHP tích hợp không thể được tuần tự hóa. Tuy nhiên, những người có khả năng này hoặc thực hiện giao diện có thể nối tiếp hoặc ma thuật __serialize []/__ unserialize [] hoặc __s ngủ []/__ wakeUp []. Nếu một lớp nội bộ không đáp ứng bất kỳ yêu cầu nào trong số đó, nó không thể được tuần tự hóa một cách đáng tin cậy.
  • Có một số ngoại lệ lịch sử đối với quy tắc trên, trong đó một số đối tượng bên trong có thể được tuần tự hóa mà không thực hiện giao diện hoặc phơi bày các phương thức.
  • __sleep[]
  • __wakeup[]
  • __serialize[]
  • __unserialize[]

Cảnh báo

Khi tuần tự hóa [] tuần tự hóa các đối tượng, dấu gạch chéo ngược hàng đầu không được bao gồm trong tên lớp của các lớp theo tên để tương thích tối đa.

Bài Viết Liên Quan

Chủ Đề