文档章节

php中的序列化与反序列化

wyhuan
 wyhuan
发布于 2016/01/26 11:14
字数 463
阅读 4
收藏 0

1.serialize() <===> unserialize(),这个大家用的最多, 老熟人了
session 保存默认用的就是这个.
如果想存储对象,数组数据等可以用(试试跟var_export()比较)
[php]
session_start();
echo $foo = serialize($_SESSION)
print_r(unserialize($foo));
[/php]

2.xmlrpc_encode, xmlrpc_decode 对应模块 php_xmlrpc
xmlrpc提供了php与xml格式间转换的方法.
参考http://www.xmlrpc.com/ , http://www.ugia.cn
相信很多人都在用
[php]
echo $foo = xmlrpc_encode($_ENV);
print_r(xmlrpc_encode($foo));
[/php]

3.wddx, 跟xmlrpc差不多 参考手册
应用搜搜google就知道了.
[php]
//wddx_serialize_vars();
echo $foo = wddx_serialize_value($_SERVER);
print_r(wddx_deserialize($foo));
[/php]

4.JSON, 对应模块 php_json, 能实现跟js对象之间的转换,
提供的函数有两个json_encode(), json_decode();
应用及优势参考文章http://www.cswiki.com/blog/?p=70
google, yahoo都在用, prototype.js可以用header('X-JSON:...');
AJAX
[php]
//注意格式及中文问题
$foo = '[{"uid":1000,"name":"abc"},{"uid":1002,"name":"def"},{"uid":1003,"name":"ghi"}]';
$bar = json_decode($foo);
print_r($bar);
echo json_encode($bar);
[/php]

5.urlparam序列化  http_build_query()也算吧,反序列化方法很多,url过来的话apache 就给处理好了
注意两个设置
arg_separator.output
arg_separator.input

string http_build_query ( array formdata [, string numeric_prefix]);
[php]
//可以是对象或整形下标数组,见手册
$foo = array(        'ids'=>array(520, 521, 522),
                                'action'=>'del'
);
echo http_build_query($foo);
[/php]

6.一个设置:unserialize_callback_func PHP _INI_ALL
[手册]:如果反序列器发现有未定义类要被实例化,将会调用反序列回调函数(使用未定义类作为参数)。
如果指定函数不存在,或者此函数没有包含/执行该未定义类,则显示警告。所以只有在你确实想要执行
这样的回调函数时才设置该选项。
(模块设置略)
[php]
ini_set('unserialize_callback_func', 'unserialize_callback_func');

function unserialize_callback_func($str) {
        eval("class $str{}");
}

print_r(unserialize('O:3:"foo":1:{s:3:"bar";s:3:"bar";}'));
[/php]

7.我不知道的及自定义的如pear中有一个序列化url参数的
8.应用

© 著作权归作者所有

wyhuan
粉丝 1
博文 171
码字总数 146419
作品 0
大连
私信 提问
PHP反序列化漏洞系列之–PHP序列化和反序列化原理

0.前言 本文为笃行日常学习记录,web安全php漏洞系列。 对象的序列化和反序列化作用就不再赘述,php中序列化的结果是一个php自定义的字符串格式,有点类似json. 我们在任何语言中设计对象的序列...

fobnn
2018/08/27
0
0
PHP多种序列化以及反序列化

PHP多种序列化以及反序列化 PHP点点通2016-09-2147 阅读 序列化PHP 序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个...

PHP点点通
2016/09/21
0
0
序列化和反序列化浅析

简介 序列化和反序列化对于现代的程序员来说是一个既熟悉又陌生的概念。说熟悉是因为几乎每个程序员在工作中都直接或间接的使用过它,说陌生是因为大多数程序员对序列化和反序列化的认识仅仅...

andot
2016/11/09
683
0
PHP多种序列化/反序列化的方法

序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。 1. s...

cnu2m
2012/11/08
26
0
PHP 序列化变量的 4 种方法

序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。 1. s...

mickelfeng
2013/01/12
120
1

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
1K
12
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
22
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
15
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
25
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部