代码编织梦想

PHP--序列化与反序列化详解

博客说明

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

说明

所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。unserialize()函数能够重新把字符串变回php原来的值。 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。

为了能够unserialize()一个对象,这个对象的类必须已经定义过。如果序列化类A的一个对象,将会返回一个跟类A相关,而且包含了对象所有变量值的字符串。 如果要想在另外一个文件中解序列化一个对象,这个对象的类必须在解序列化之前定义,可以通过包含一个定义该类的文件或使用函数spl_autoload_register()来实现。

PHP序列化:serialize

序列化是将变量或对象转换成字符串的过程。

class student{

public $name;

public $age;

public $number;

//_construct:创建对象时初始化

function __construct($name,$age,$number){

$this->name = $name;

$this->age = $age;

$this->number = $number;

}

}

$student = new student("Jack",22,11086);

var_dump(serialize($student));

?>

测试运行

c872baead72753f48cda2ea41c054388.png

string(76) "O:7:"student":3:{s:4:"name";s:4:"Jack";s:3:"age";i:22;s:6:"number";i:11086;}"

PHP反序列化:unserialize

反序列化是将字符串转换成变量或对象的过程。

class student{

public $name;

public $age;

public $number;

//_construct:创建对象时初始化

function __construct($name,$age,$number){

$this->name = $name;

$this->age = $age;

$this->number = $number;

}

}

$student = 'O:7:"student":3:{s:4:"name";s:4:"Jack";s:3:"age";i:22;s:6:"number";i:11086;}';

var_dump(unserialize($student));

?>

测试运行

fb1f50ccf12f72f96349edb387b57252.png

object(student)#1 (3) {

["name"]=>

string(4) "Jack"

["age"]=>

int(22)

["number"]=>

int(11086)

}

魔术函数

函数

说明

__construct()

类的构造函数

__destruct()

类的析构函数

__call()

在对象中调用一个不可访问方法时调用

__callStatic()

用静态方式中调用一个不可访问方法时调用

__get()

获得一个类的成员变量时调用

__set()

设置一个类的成员变量时调用

__isset()

当对不可访问属性调用isset()或empty()时调用

__unset()

当对不可访问属性调用unset()时被调用

__sleep()

执行serialize()时,先会调用这个函数

__wakeup()

执行unserialize()时,先会调用这个函数

__toString()

类被当成字符串时的回应方法

__invoke()

调用函数的方式调用一个对象时的回应方法

__set_state()

调用var_export()导出类时,此静态方法会被调用

__clone

当对象复制完成时调用

__autoload()

尝试加载未定义的类

__debugInfo()

打印所需调试信息

为什么突然说到魔术函数呢,因为在序列化和反序列化的时候经常会用到__construct(),__destruct(),__sleep(),__wakeup()

在后面的博客里面有相应的ctf实例

感谢

万能的网络

以及勤劳的自己

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29186249/article/details/114571387