有利于存储和传递value(除了resource类型外),却不会丢失其原有类型和结构。

serialize序列化时会调用魔术方法__sleep();

unserialize反序列化时会调用魔术方法__wakeup();

序列化 数组:

$arr = ['name'=>'Tony','age'=>29,'sex'=>'male'];
$s = serialize($arr);
echo '序列化数组:';
var_dump($s);
echo '反序列化数组:';
var_dump(unserialize($s));

  输出

E:\Project\self\demo\serialize\demo.php:8:string 'a:3:{s:4:"name";s:4:"Tony";s:3:"age";i:29;s:3:"sex";s:4:"male";}' (length=64)
反序列化数组:
E:\Project\self\demo\serialize\demo.php:10:
array (size=3)
'name' => string 'Tony' (length=4)
'age' => int 29
'sex' => string 'male' (length=4)

序列化对象:

新建一个对象:

class A{
public $one = 1;
public function show_one(){
echo $this->one;
}
}
require_once('class_a.php');
$s = serialize(new A);
//把变量$s保存起来以便其他地方能够读取到
file_put_contents('store', $s);
require_once('class_a.php');
$s = file_get_contents('store');
$a = unserialize($s);
var_dump($s);
var_dump($a);
//现在使用对象$a里面的函数
$a->show_one();

  输出

E:\Project\self\demo\serialize\demo.php:18:string 'O:1:"A":1:{s:3:"one";i:1;}' (length=26)
E:\Project\self\demo\serialize\demo.php:19:
object(A)[1]
public 'one' => int 1
1

危害与防御:

当用户对于反序列化的参数是可控的,利用__toString等是很容易造成意想不到的危害,所以最好在参数外面再套一层,例如json_decode。

https://www.jb51.net/article/107110.htm

序列化serialize与反序列化unserialize的更多相关文章

  1. 序列化serialize()与反序列化unserialize()的实例

    在写序列化serialize与反序列化unserialize()时,我们先来看看: serialize - 产生一个可存储的值的表示 描述 string serialize ( mixed $valu ...

  2. 【PHP基础】序列化serialize()与反序列化unserialize()

    序列化serialize()与反序列化unserialize(): 序列化serialize():就是将一个变量所代表的 “内存数据”转换为“字符串”的形式,并持久保存在硬盘(写入文件中保存)上的一种 ...

  3. 文件读取的时候要留意 -- 序列化serialize()与反序列化unserialize():

    原文:https://blog.csdn.net/little_rabbit_baby/article/details/53840543 序列化serialize()与反序列化unserialize( ...

  4. PHP序列化serialize()和反序列化unserialize()

    所谓的序列化,就是把保存在内存中的各种对象状态或属性保存起来,在需要时可以还原出来. serialize() 可处理除了 resource 之外的任何类型返回字符串,此字符串包含了表示 value 的 ...

  5. php序列化(serialize)和反序列化(unserialize)函数

    用法:serialize().unserialize() 适用情境:serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方.这有利于存储或传递 PHP 的值,同时不 ...

  6. 【MFC】序列化(Serialize)、反序列化(Deserialize)

    1.首先在头文件里面声明 DECLARE_SERIAL(CSelectionSerial) 2.重写CObject的Serialize函数 virtual void Serialize(CArchiv ...

  7. 【转】【C#】序列化(Serialize)、反序列化(Deserialize)

    序列化又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制.其目的是以某种存储形成使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方. .NET框架提供了两种串行化的方式: 1. ...

  8. 深入C#学习系列一:序列化(Serialize)、反序列化(Deserialize)

    序列化概述: 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象 ...

  9. C#—序列化(Serialize)和反序列化(NonSerialize)

    (转自:http://www.cnblogs.com/Abel-Zhang/p/Serialize.html) 一.概述 序列化是把对象转变成流.相反的过程就是反序列化. 哪些场合用到这项技术呢? 1 ...

随机推荐

  1. java 运行 .jar 文件乱码

    http://yang3wei.github.io/blog/2013/02/10/java-dfile-dot-encoding-equals-utf-8-gan-diao-luan-ma/ 启动时 ...

  2. canvas图形绘制

    前面的话 前面分别介绍了canvas的基础用法和进阶用法,本文将使用canvas的各种语法进行图形绘制 绘制线条 [绘制线条] 下面来尝试绘制一段线条 <canvas id="draw ...

  3. 配置Web.config 元素CustomErrors

    一.customErrors 元素 属性 说明 defaultRedirect 指定出错时将浏览器定向到的默认 URL.如果未指定该属性,则显示一般性错误. 可选的属性. URL 可以是绝对的(如 w ...

  4. 前端动态属性页面的 要用id做name 因为这样方便在提交表单时候取到值

    前端动态属性页面的 要用id做name 因为这样方便在提交表单时候取到值

  5. windows常用服务命令

    windows运行打开服务命令的方法 :在开始->运行,输入以下命令 gpedit.msc-----组策略 sndrec32-------录音机 Nslookup-------IP地址侦测器 e ...

  6. Sudoku POJ - 3076

    Sudoku Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 5769   Accepted: 2684 Descripti ...

  7. 【XSY2534】【CF835D】Palindromic characteristics 回文自动机

    题目大意 ​ 一个字符串\(s\)是\(1\)−回文串当且仅当这个串是回文串. ​ 一个串\(s\)是\(k\)−回文串\((k>1)\)当且仅当\(s\)的前一半与后一半相同且\(s\)的前一 ...

  8. Hdoj 1785.You Are All Excellent 题解

    Problem Description 本次集训队共有30多人参加,毫无疑问,你们都是很优秀的,但是由于参赛名额有限,只能选拔部分队员参加省赛.从学校的角度,总是希望选拔出最优秀的18人组成6支队伍来 ...

  9. css文本设置

    常用的应用文本的css样式: color 设置文字的颜色,如: color:red; font-size 设置文字的大小,如:font-size:12px; font-family 设置文字的字体,如 ...

  10. 编译安装Nginx和PHP(带编译mysql)

    应用场景:目前常见的LNMP架构中很多服务都采用nginx+fastcgi+php来提供服务. 测试环境:Centos 7.2 / Nginx 1.12.0 / PHP 5.6 配置步骤: 1. 下载 ...