PHP 反序列化——入門
阿新 • • 發佈:2020-09-22
0x00 引言
什麼是反序列化
- 序列化
- 類物件在儲存的過程中需要將物件的資訊轉換為可以傳輸的形式,故將物件進行序列化
- 序列化的結果將以字串的形式儲存在臨時或永續性儲存區,以便對該物件的二次讀取
- 用法:serialize()
- 反序列化
- 在對類物件進行使用或者讀取時,從儲存區讀取該字串,對字串進行反序列化操作,重新建立該物件
- 用法:unserialize()
類物件的序列化
<?php class student{ public $name = 'xiaoming'; public $age = 20; public $score = 60; } $a = new student(); serialize($a); //$a='O:7:"student":3:{s:4:"name";s:8:"xiaoming";s:3:"age";i:20;s:5:"score";i:60;}' ?>
-
定義類:
- 使用
class student
定義一個名字為student的類 - 這個類中一共有三個
Public
屬性
- 使用
-
建立類物件
- 使用
new student()
,建立一個student
類物件,並將該物件賦給$a
- 使用
-
對類物件進行序列化
- 使用
serialize($a)
對類物件$a
進行序列化,序列化結果為O:7:"student":3:{s:4:"name";s:8:"xiaoming";s:3:"age";i:20;s:5:"score";i:60;}
- 使用
-
序列化結果分析
### O:7:"student":3:{s:4:"name";s:8:"xiaoming";s:3:"age";i:20;s:5:"score";i:60;} 1. O-Object-物件 2. 7-len(ObjectName)-物件名稱長度 3. student-ObjectName-物件名稱 4. 3-count(variable)-屬性個數 5. s-String-字串 6. 4-len(String)-字串長度 7. name-StringValue-字串值 ### Less...