文章来源|MSWeb高级攻防第3期作业
本文作者:huang(Web高级攻防3期学员)
基本概念序列化(串行化):将变量转换为可保存或传输的字符串的过程;反序列化(反串行化):将字符串转化成原来的变量使用。
PHP序列化的函数为serialize(),反序列化的函数为unserialize().
为什么需要序列化序列化是为了对象可以跨平台存储,和进行网络传输。进行跨平台存储和网络传输的方式就是IO,IO支持的数据格式就是字节数组。也就是说把一个对象状态保存成一种跨平台识别的字节格式,然后其他的平台才可以通过字节信息解析还原对象信息。
举个栗子:
?php//定义一个类,类名是chybetaclasschybeta{//定义一个变量var$test=;}//new一个对象,实例化$class1=newchybeta;//序列化创建的对象$class1_ser=serialize($class1);print_r($class1_ser);?
上面代码通过序列化函数将一个对象class1转化成可传输的字符串。输出结果为O:7:"chybeta":1:{s:4:"test";i:;},其中O表示对象,7表示对象名chybeta的长度,chybeta是对象名,1表示有1个参数,{}里面的参数有key和value,s表示是string对象,4表示长度,test是key,i表示是integer对象,是value。
序列化中各种数据表达方式在PHP中对不同类型的数据用不同的字母来标识:a-array(数组型)b-boolean(布尔型)d-double(双精度型)i-integer(整数型)o-