前言
PHP的序列化和反序列化
序列化
对象示例
对象中包公有的属性
1 2 3 4 5 6
| class User { public $key = 'value'; } $user = new User(); $str = serialize($user); echo $str;
|
1
| O:4:"User":1:{s:3:"key";s:5:"value";}
|
对象中包含受保护的属性
- 如果对象中包含受保护的属性,则序列化后的属性值为
%00*%00属性名
1 2 3 4 5 6
| class User { private $key = 'value'; } $user = new User(); $str = serialize($user); echo $str;
|
1
| O:4:"User":1:{s:3:"key";s:8:"*value";}
|
对象中包含私有的属性
- 如果对象中包含私有的属性,则序列化后的属性值为
%00类名%00属性名
1 2 3 4 5 6
| class User { private $key = 'value'; } $user = new User(); $str = serialize($user); echo $str;
|
1
| O:4:"User":1:{s:3:"key";s:11:"Uservalue";}
|
数组对象示例
1 2 3 4 5 6
| class User { public $key = 'value'; } $user = [new User(),new User()]; $str = serialize($user); echo $str;
|
1
| a:2:{i:0;O:4:"User":1:{s:3:"key";s:5:"value";}i:1;O:4:"User":1:{s:3:"key";s:5:"value";}}
|
反序列化
1
| $对象名 = unserialize($字符串);
|
完成
参考文献
哔哩哔哩——千锋教育网络安全学院
哔哩哔哩——xiaodisec