• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

深入了解php中序列化与反序列化

php 搞代码 4年前 (2022-01-22) 39次浏览 已收录 0个评论

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

serialize() 把变量和它们的值编码成文本形式

unserialize() 恢复原先变量

<span style="color: #800080">$stooges = <span style="color: #0000ff">array('Moe','Larry','Curly');<br /><span style="color: #800080">$new = <span style="color: #008080">serialize(<span style="color: #800080">$stooges);<br /><span style="color: #008080">print_r(<span style="color: #800080">$new);<span style="color: #0000ff">echo "<br />";<br /><span style="color: #008080">print_r(<span style="color: #008080">unserialize(<span style="color: #800080">$new));</span></span></span></span></span></span></span></span></span></span></span>

结果: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元字符进行处理:

<span style="color: #800080">$shopping = <span style="color: #0000ff">array('Poppy seed bagel' => 2,'Plain Bagel' =>1,'Lox' =>4);<br /><span style="color: #0000ff">echo '<a href="next.php?cart='.<span style="color: #008080">urlencode(<span style="color: #008080">serialize(<span style="color: #800080">$shopping)).'">next</a>';</span></span></span></span></span></span>

margic_quotes_gpc和magic_quotes_runtime配置项的设置会影响传递到unserialize()中的数据。

如果magic_quotes_gpc项是启用的,那么在URL、POST变量以及cookies中传递的数据在反序列化之前必须用stripslashes()进行处理:

<span style="color: #800080">$new_cart = <span style="color: #008080">unserialize(<span style="color: #008080">stripslashes(<span style="color: #800080">$cart)); <span style="color: #008000">//<span style="color: #008000">如果magic_quotes_gpc开启<span style="color: #008000"><br /><span style="color: #800080">$new_cart = <span style="color: #008080">unserialize(<span style="color: #800080">$cart);</span></span></span></span></span></span></span></span></span></span>

如果magic_quotes_runtime是启用的,那么在向文件中写入序列化的数据之前必须用addslashes()进行处理,而在读取它们之前则必须~来1源gaodai#ma#com搞*代#码1网搞代gaodaima码用stripslashes()进行处理:

//当对一个对象进行反序列化操作时,PHP会自动地调用其wakeUp()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。

以上就是深入了解php中序列化与反序列化的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:深入了解php中序列化与反序列化

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址