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

filename = $filename;
     $this->open( );
   }

   function open( ) {
     $this->fp = fopen($this->filename, "a")
                 or die("Can't open {$this->filename}");
   }

   function write($note) {
     fwrite($this->fp, "$note\n");
   }

   function read( ) {
     return join('', file($this->filename));
   }

   function _  _wakeup( ) {
     $this->open( );
   }

   function _  _sleep( ) {
     // write information to the account file
     fclose($this->fp);
     return array('filename');
   }
 }
?>

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

// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.
$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmtarray_reverse($sqldata))) {
        
/* Something went wrong.. */
    
}
}
?>

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.

/*
Anatomy of a serialize()'ed value:

String
s:size:value;

Integer
i:value;

Boolean
b:value; (does not store "true" or "false", does store '1' or '0')

Null
N;

$value0

$value1

$value2

$value3

Xem thêm

unserialize () - Tạo giá trị PHP từ biểu diễn được lưu trữ

$value4

$value5

$value6

$value3

var_export () - đầu ra hoặc trả về biểu diễn chuỗi có thể phân tích được của một biến

json_encode () - Trả về biểu diễn JSON của một giá trị

$value8

$value9

value0

value1

value2

value3

value4

value5

Các đối tượng tuần tự

Egingell tại Sisna Dot Com ¶

value6

value7

value8

$value3

16 năm trước

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.

value0

value1

value2

value3

value4

value5

value6

$value3

Xem thêm

unserialize () - Tạo giá trị PHP từ biểu diễn được lưu trữ

value8

value9

$value3

var_export () - đầu ra hoặc trả về biểu diễn chuỗi có thể phân tích được của một biến

json_encode () - Trả về biểu diễn JSON của một giá trị

// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.
$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmtarray_reverse($sqldata))) {
        
/* Something went wrong.. */
    
}
}
?>
1

// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.
$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmtarray_reverse($sqldata))) {
        
/* Something went wrong.. */
    
}
}
?>
2

$value3

Các đối tượng tuần tự

Egingell tại Sisna Dot Com ¶

// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.
$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmtarray_reverse($sqldata))) {
        
/* Something went wrong.. */
    
}
}
?>
4

// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.
$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmtarray_reverse($sqldata))) {
        
/* Something went wrong.. */
    
}
}
?>
5

// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.
$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmtarray_reverse($sqldata))) {
        
/* Something went wrong.. */
    
}
}
?>
6

// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.
$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmtarray_reverse($sqldata))) {
        
/* Something went wrong.. */
    
}
}
?>
7

// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.
$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmtarray_reverse($sqldata))) {
        
/* Something went wrong.. */
    
}
}
?>
8

// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.
$conn odbc_connect("webdb""php""chicken");
$stmt odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!
odbc_execute($stmt$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmtarray_reverse($sqldata))) {
        
/* Something went wrong.. */
    
}
}
?>
9

16 năm trước

unserialize () - Tạo giá trị PHP từ biểu diễn được lưu trữ

/*
Anatomy of a serialize()'ed value:
0

var_export () - đầu ra hoặc trả về biểu diễn chuỗi có thể phân tích được của một biến

unserialize () - Tạo giá trị PHP từ biểu diễn được lưu trữ

/*
Anatomy of a serialize()'ed value:
1

/*
Anatomy of a serialize()'ed value:
2

var_export () - đầu ra hoặc trả về biểu diễn chuỗi có thể phân tích được của một biến

json_encode () - Trả về biểu diễn JSON của một giá trị

Các đối tượng tuần tự

/*
Anatomy of a serialize()'ed value:
4

/*
Anatomy of a serialize()'ed value:
5

/*
Anatomy of a serialize()'ed value:
6

/*
Anatomy of a serialize()'ed value:
7

/*
Anatomy of a serialize()'ed value:
8

/*
Anatomy of a serialize()'ed value:
9

String
s:size:value;
0

String
s:size:value;
1

String
s:size:value;
2

$value3

Xem thêm

unserialize () - Tạo giá trị PHP từ biểu diễn được lưu trữ

String
s:size:value;
4

var_export () - đầu ra hoặc trả về biểu diễn chuỗi có thể phân tích được của một biến

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.

String
s:size:value;
5

String
s:size:value;
6

String
s:size:value;
7

String
s:size:value;
8

Xem thêm

unserialize () - Tạo giá trị PHP từ biểu diễn được lưu trữ

String
s:size:value;
9

Integer
i:value;
0

Integer
i:value;
1

var_export () - đầu ra hoặc trả về biểu diễn chuỗi có thể phân tích được của một biến

json_encode () - Trả về biểu diễn JSON của một giá trị

Integer
i:value;
2

Integer
i:value;
3

Integer
i:value;
4

Integer
i:value;
5

Integer
i:value;
6

Integer
i:value;
7

Các đối tượng tuần tự

Egingell tại Sisna Dot Com ¶

Integer
i:value;
8

Integer
i:value;
9

$value3

16 năm trước

Các đối tượng tuần tự

Boolean
b:value; (does not store "true" or "false", does store '1' or '0')
1

Boolean
b:value; (does not store "true" or "false", does store '1' or '0')
2

$value3

Egingell tại Sisna Dot Com ¶

16 năm trước

Boolean
b:value; (does not store "true" or "false", does store '1' or '0')
4

Boolean
b:value; (does not store "true" or "false", does store '1' or '0')
5

Boolean
b:value; (does not store "true" or "false", does store '1' or '0')
6

Boolean
b:value; (does not store "true" or "false", does store '1' or '0')
7

Boolean
b:value; (does not store "true" or "false", does store '1' or '0')
8

Boolean
b:value; (does not store "true" or "false", does store '1' or '0')
9

$value3

Ẩn danh ¶

unserialize () - Tạo giá trị PHP từ biểu diễn được lưu trữ

Null
N;
1

Null
N;
2

Null
N;
3

Null
N;
4

var_export () - đầu ra hoặc trả về biểu diễn chuỗi có thể phân tích được của một biến

Các đối tượng tuần tự

Null
N;
5

Null
N;
6

$value3

Xem thêm

16 năm trước

Null
N;
8

Null
N;
9

$value00

$value01

$value02

$value03

Ẩn danh ¶

Egingell tại Sisna Dot Com ¶

$value04

$value05

$value06

$value3

16 năm trước

16 năm trước

$value08

$value09

$value10

$value3

Ẩn danh ¶

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.

$value12

$value13

$value14

$value15

$value16

$value17

$value18

$value3

Xem thêm

unserialize () - Tạo giá trị PHP từ biểu diễn được lưu trữ

$value20

$value21

$value3

var_export () - đầu ra hoặc trả về biểu diễn chuỗi có thể phân tích được của một biến

json_encode () - Trả về biểu diễn JSON của một giá trị

$value23

Các đối tượng tuần tự

Egingell tại Sisna Dot Com ¶

$value24

16 năm trước

unserialize () - Tạo giá trị PHP từ biểu diễn được lưu trữ

$value25

$value26

$value27

$value28

$value29

$value30

$value3

var_export () - đầu ra hoặc trả về biểu diễn chuỗi có thể phân tích được của một biến

unserialize () - Tạo giá trị PHP từ biểu diễn được lưu trữ

$value32

$value33

$value34

$value35

$value36

$value37

Thứ Sáu13 tại IG Dot Com Dot Br ¶

15 năm trước

$value38

$value39

$value40

$value41

$value42

$value43

$value3

tuxedobob ¶

8 năm trước

$value45

$value46

$value47

$value48

$value49

$value3

Ví dụ về sự giải phóng là gì?

Hủy bỏ là quá trình ngược trong đó luồng byte được sử dụng để tạo lại đối tượng Java thực tế trong bộ nhớ. Cơ chế này được sử dụng để tồn tại đối tượng. Luồng byte được tạo ra là nền tảng độc lập. Vì vậy, đối tượng được tuần tự hóa trên một nền tảng có thể được phân định trên một nền tảng khác.the reverse process where the byte stream is used to recreate the actual Java object in memory. This mechanism is used to persist the object. The byte stream created is platform independent. So, the object serialized on one platform can be deserialized on a different platform.

Sê -ri hóa giải thích với ví dụ trong PHP là gì?

Xét nghiệm một đối tượng có nghĩa là chuyển đổi nó thành biểu diễn byteStream có thể được lưu trữ trong một tệp. Điều này rất hữu ích cho dữ liệu liên tục; Ví dụ: Phiên PHP tự động lưu và khôi phục các đối tượng.converting it to a bytestream representation that can be stored in a file. This is useful for persistent data; for example, PHP sessions automatically save and restore objects.

Có nghĩa là gì bởi sự giải phóng?

Hủy bỏ là quá trình xây dựng lại cấu trúc hoặc đối tượng dữ liệu từ một loạt byte hoặc một chuỗi để khởi tạo đối tượng để tiêu thụ.Đây là quá trình đảo ngược của tuần tự hóa, tức là, chuyển đổi cấu trúc dữ liệu hoặc đối tượng thành một loạt byte để lưu trữ hoặc truyền trên các thiết bị.the process of reconstructing a data structure or object from a series of bytes or a string in order to instantiate the object for consumption. This is the reverse process of serialization, i.e., converting a data structure or object into a series of bytes for storage or transmission across devices.

Sê -ri hóa và giải phóng hóa trong lập trình là gì?

Tuần tự hóa là quá trình chuyển đổi một đối tượng thành một luồng byte để lưu trữ đối tượng hoặc truyền nó đến bộ nhớ, cơ sở dữ liệu hoặc tệp.Mục đích chính của nó là lưu trạng thái của một đối tượng để có thể tạo lại nó khi cần thiết.Quá trình đảo ngược được gọi là khử deserialization.. Its main purpose is to save the state of an object in order to be able to recreate it when needed. The reverse process is called deserialization.