php的serialize()函数和unserialize()函数

适用情境:serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。比较有用的地方就是将数据存入数据库或记录在文件中的时候

serialize()可处理处资源类型外所有的类型,也可以序列化对象

<?php 
$array = array(); 
$array[‘keys‘] = ‘www‘; 
$array[‘values‘]=‘11111‘; 
$a = serialize($array); 
echo $a; 
unset($array); 
$a = unserialize($a); 
print_r($a); 
?>

输出

a:2:{s:4:"keys";s:3:"www";s:6:"values";s:5:"11111";}

Array ( [keys] => www [values] => 11111 )

对类的操作也一样

时间: 2024-10-25 14:19:08

php的serialize()函数和unserialize()函数的相关文章

php序列化函数漏洞----unserialize()函数

unserialize()函数概念 unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值.返回的是转换之后的值,可为 integer.float.string.array 或 object.如果传递的字符串不可解序列化,则返回 FALSE.与之相对的函数serialize()序列化函数. 我们看一个题目题目:天网管理系统,链接: http://ctf5.shiyanbar.com/10/web1/ 1.进入题目查看网页源码 这行提示比较霸气,直接让你判断你的用户名

serialize和unserialize函数

序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性.1. serialize和unserialize函数这两个是序列化和反序列化PHP中数据的常用函数. <?php $a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); //序列化数组 $s = serialize($a); echo $s;

php unserialize函数反序列话数组

有没有,遇到这种情况:使用serialize函数序列化一个数组后,然后想通过unserialize函数反序话,得到该数组,可是确报错,得不到想要的结果. 从网上搜索,发现很多网友都遇到相同的问题,好像说这是unserialize函数的bug. 不过,好在有人已经解决了,我就借花献佛,将他记录下来,供大家使用: 1.假如,是utf-8的数据,请使用下面的函数反序列化(我没有验证,可以尝试下) function mb_unserialize($serial_str) { $serial_str= p

PHP &quot;Unserialize()&quot;函数释放后重利用远程代码执行漏洞

PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中. PHP的‘process_nested_data’函数在实现上存在释放后重利用漏洞,攻击者通过向"unserialize()"函数传递构造的输入,利用此漏洞可破坏内存:"var_push_dtor()"函数在实现上存在空指针间接引用漏洞,攻击者通过向"unserialize()"函数传递构造的输入,利用此漏洞可造成崩溃.成功利用这些漏洞可造成任意代码执行.以下版本受到

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

在写序列化serialize与反序列化unserialize()时,我们先来看看: serialize - 产生一个可存储的值的表示 描述 string serialize ( mixed $value ) serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方. 这有利于存储或传递 PHP 的值,同时不丢失其类型和结构. 想要将已序列化的字符串变回 PHP 的值,可使用 unserialize().serialize() 可处理除了 resource

async(await)函数和 Generator 函数 区别

async 函数是 Generator 函数的语法糖. async 函数对 Generator 函数的改进体现在: 1. async 内置执行器. Generator 函数的执行必须靠执行器,需要调用 next() 方法,或者用co 模块:而 async 函数自带执行器.也就是说,async 函数的执行与普通函数一模一样,只要一行. 2. 更好的语义. async 和 await 比起星号和 yield,语义更清楚. 3.更广的适用性. co 模块约定,yield 命令后面只能是 Thunk 函

Python-lambda函数,map函数,filter函数

lambda函数主要理解: lambda 参数:操作(参数). lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值.lambda语句构建的其实是一个函数对象 map函数: map(function_to_apply, list_of_inputs).map函数可以把list_of_inputs内的对象依次输入到function_to_apply中进行操作. filter函数: filter(function_to_apply, list_of_inputs).Filter

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type

oracle listagg函数、lag函数、lead函数 实例

Oracle大师Thomas Kyte在他的经典著作中,反复强调过一个实现需求方案选取顺序: “如果你可以使用一句SQL解决的需求,就使用一句SQL:如果不可以,就考虑PL/SQL是否可以:如果PL/SQL实现不了,就考虑Java存储过程是否可以:如果这些都不可能实现,那么就需要考虑你是否真的需要实现这个需求.” 各个关系型DBMS产品都在遵守关系型数据库模型的基本体系架构,遵循通用的SQL国际规范.同时,为了更好地配合自身数据库实现的特征,以及提供更加丰富的功能,各个DBMS纷纷在标准SQL上