php中序列化与反序列化
来源:互联网 发布:淘宝专业版退回基础版 编辑:程序博客网 时间:2024/06/04 05:54
转自:http://qing.weibo.com/tag/unserialize
把复杂的数据类型压缩到一个字符串中
serialize() 把变量和它们的值编码成文本形式
unserialize() 恢复原先变量eg;
$stooges = array('Moe','Larry','Curly');$new = serialize($stooges);print_r($new);echo "<br />";print_r(unserialize($new));
结果:a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}
Array ( [0] => Moe [1] => Larry [2] => Curly )当把这些序列化的数据放在URL中在页面之间会传递时,需要对这些数据调用urlencode(),以确保在其中的URL元字符进行处理:
如果magic_quotes_runtime是启用的,那么在向文件中写入序列化的数据之前必须用addslashes()进行处理,而在读取它们之前则必须用stripslashes()进行处理:
当对一个对象进行反序列化操作时,PHP会自动地调用其__wakeUp()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。
$shopping = array('Poppy seed bagel' => 2,'Plain Bagel' =>1,'Lox' =>4);echo '<a href="next.php?cart='.urlencode(serialize($shopping)).'">next</a>';
margic_quotes_gpc和magic_quotes_runtime配置项的设置会影响传递到unserialize()中的数据。
如果magic_quotes_gpc项是启用的,那么在URL、POST变量以及cookies中传递的数据在反序列化之前必须用stripslashes()进行处理:
$new_cart = unserialize(stripslashes($cart)); //如果magic_quotes_gpc开启$new_cart = unserialize($cart);
如果magic_quotes_runtime是启用的,那么在向文件中写入序列化的数据之前必须用addslashes()进行处理,而在读取它们之前则必须用stripslashes()进行处理:
$fp = fopen('/tmp/cart','w');fputs($fp,addslashes(serialize($a)));fclose($fp);//如果magic_quotes_runtime开启$new_cat = unserialize(stripslashes(file_get_contents('/tmp/cart')));//如果magic_quotes_runtime关闭$new_cat = unserialize(file_get_contents('/tmp/cart'));在启用了magic_quotes_runtime的情况下,从数据库中读取序列化的数据也必须经过stripslashes()的处理,保存到数据库中的序列化数据必须要经过addslashes()的处理,以便能够适当地存储。mysql_query("insert into cart(id,data) values(1,'".addslashes(serialize($cart))."')");$rs = mysql_query('select data from cart where id=1');$ob = mysql_fetch_object($rs);//如果magic_quotes_runtime开启$new_cart = unserialize(stripslashes($ob->data));//如果magic_quotes_runtime关闭$new_cart = unserialize($ob->data);
当对一个对象进行反序列化操作时,PHP会自动地调用其__wakeUp()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。
0 0
- php中序列化与反序列化
- php中序列化与反序列化
- php中序列化与反序列化
- php中序列化与反序列化
- php中序列化与反序列化
- php中序列化与反序列化
- php中序列化与反序列化
- php中序列化与反序列化
- php中序列化与反序列化
- php序列化与反序列化
- 序列化与反序列
- 序列化与反序列
- php中的序列化与反序列化[喜悦原创]
- PHP的序列化与反序列化的使用
- php中的序列化与反序列化
- php中的序列化与反序列化
- php面向对象之序列化与反序列化
- PHP序列化与反序列化的使用
- 如何关闭或开启隧道适配器
- 64位Red Hat 6.5 修改yum源
- leetcode word break
- 使用AWK进行分割字符串以及截取字符串
- 最火的android开源项目(三)
- php中序列化与反序列化
- 程序猿之--奋斗篇
- 【cocos2D-x学习】4.坐标系其二——OpenGL中的坐标系
- PWM imx6q sabrelite
- 阶乘的精确值
- mysql对表的字段进行操作
- ZZUOJ-1195-OS Job Scheduling(郑州大学第七届ACM大学生程序设计竞赛E题)
- UICollectionView 和 UIKit Dynamics
- linux shell 字符串操作(长度,查找,替换)详解