
上文中我们简单介绍了下PHP序列化,及为什么要序列化。
弄清楚前面2个知识点后,理解这个过程会更容易。
*****PHP语言中常用的序列化和反序列化函数有serialize,unserialize,json_encode和json_decode.
*****这里介绍serialize,unserialize函数。
目录
serialize函数
当序列化对象时,PHP在序列化动作之前调用魔法函数 __sleep,这样就允许对象在被序列化之前做任何清楚操作。
魔法函数:在php的语法中,有一些系统自带的方法名,均以双下划线开头,它会在特定的情况下被调用。即所谓的魔法函数。
__sleep() 当调用searialize()方法时调用,返回值为数组,表示需要序列化的数据项.
总结:serialize函数使用之前,必须要先调用___sleep函数。
这里简单介绍一个例子。
<?php
class Student
{
public $name = '';
public $num = 0;
public $subject='';
public $grade='';
}
$student = new Student();
$student->name = 'OTTO';
$student->num = 1;
$student->subject='math';
$student->grade=65;
$str = serialize($student);
echo $str.'<br>';
输出如下:
O:7:"Student":4:{s:4:"name";s:4:"OTTO";s:3:"num";i:1;s:7:"subject";
s:4:"math";s:5:"grade";i:65;}<br>
O:7:"Student":4:{s:4:"name";s:4:"OTTO";s:3:"num";i:1;s:7:"subject";
s:4:"math";s:5:"grade";i:65;}

本文详细介绍了PHP序列化函数serialize和unserialize的工作原理,包括如何通过__sleep和__wakeup魔法方法进行对象状态管理和资源处理。通过实例演示了如何使用这些函数进行对象序列化与反序列化的过程。
PHP反序化漏洞解析(2) PHP序列化反序列化过程&spm=1001.2101.3001.5002&articleId=121569450&d=1&t=3&u=83903b182d0d4f389482ec8fb55c334e)
1448

被折叠的 条评论
为什么被折叠?



