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元字符进行处理:
$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()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。

最新文章

  1. Tomcat shutdown执行后无法退出进程问题排查及解决
  2. CentOS7中禁用IPV6
  3. Arduino 极速入门系列 - 光控灯(3) - 光敏电阻、与电阻分压那些事
  4. centos6虚拟机复制后修改网卡
  5. Android中的动态加载机制
  6. linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
  7. BZOJ 1034 泡泡堂
  8. dir:一行代码,提取出所有视频文件名称及路径
  9. ios中,长按Webview中的图片
  10. 【easuyi】---easyui中的验证validatebox自定义
  11. doc下批处理文件的感想
  12. php经典面试题
  13. Android 虚拟机快捷键
  14. 探索Oracle之数据库升级七 11gR2 to 12c 升级完毕后插入PDB
  15. [C++]数组与指针(纯代码-复习用)
  16. Babelfish 基本试用
  17. 四种遍历hashMap的方法及比较
  18. FaceBook登陆API -- Login with API calls
  19. 【bzoj5084】hashit 广义后缀自动机+树链的并+STL-set
  20. elasticsearch 使用tcp 访问NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{Yk0WjtKbQXqYCJSDFRYlRA}

热门文章

  1. C#导入导出Excel表的数据
  2. js回调函数callback()
  3. update目标在查询返回结果集中的解决方案
  4. 【转】必需知道的 SharePoint 权限 Tips
  5. VS 2015 (RC)下Entitiy Framework 升级后CodeFirst命令不能使用
  6. Rabbit MQ安装配置及常见问题
  7. 用EnumDisplaySettings获取显示设置信息
  8. GIT学习(二)
  9. asp.net 备份和恢复数据库
  10. CBQW ---分组表单展示