-->

PHP资讯

您的当前位置:首页 > 资讯 > PHP基础

php中序列化与反序列化

2018-11-11 18:16:05  来源:admin 点击:909

转自:http://qing.weibo.com/tag/unserialize

把复杂的数据类型压缩到一个字符串中

serialize() 把变量和它们的值编码成文本形式
unserialize() 恢复原先变量
eg:
 = ('Moe','Larry','Curly');
 = ();
(); "<br />";
(());
结果: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元字符进行处理:
 = ('Poppy seed bagel' => 2,'Plain Bagel' =>1,'Lox' =>4);
 '<a href="next.php?cart='.(()).'">next</a>';
margic_quotes_gpc和magic_quotes_runtime配置项的设置会影响传递到unserialize()中的数据。
如果magic_quotes_gpc项是启用的,那么在URL、POST变量以及cookies中传递的数据在反序列化之前必须用stripslashes()进行处理:
 = (());  = ();
如果magic_quotes_runtime是启用的,那么在向文件中写入序列化的数据之前必须用addslashes()进行处理,而在读取它们之前则必须用stripslashes()进行处理:
复制代码
 = ('/tmp/cart','w');
(,(()));
();
 = ((('/tmp/cart')));
 = (('/tmp/cart'));
在启用了magic_quotes_runtime的情况下,从数据库中读取序列化的数据也必须经过stripslashes()的处理,保存到数据库中的序列化数据必须要经过addslashes()的处理,以便能够适当地存储。
("insert into cart(id,data) values(1,'".(())."')");
 = ('select data from cart where id=1');
 = ();
 = ((->data));
 = (->data);


相关文章更多 >

© 2024版权所有 水水网

电话:171780793