serialize()和unserialize()在php手册上的解释是:
serialize — Generates a storable representation of a value
serialize — 产生一个可存储的值的表示
unserialize — Creates a PHP value from a stored representation
unserialize — 从已存储的表示中创建 PHP 的值
<?php
//声明一个类
class dog {
var $name;
var $age;
var $owner;
function dog($in_name="unnamed",$in_age="0",$in_owner="unknown") {
$this->name = $in_name;
$this->age = $in_age;
$this->owner = $in_owner;
}
function getage() {
return ($this->age * 365);
}
function getowner() {
return ($this->owner);
}
function getname() {
return ($this->name);
}
}
$ourfirstdog = new dog("Rover",12,"Lisa and Graham");
//用serialize函数将这个实例转化为一个序列化的字符串
$dogdisc = serialize($ourfirstdog);
print $dogdisc; //$ourfirstdog 已经序列化为字符串 O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3:"age";i:12;s:5:"owner";s:15:"Lisa and Graham";}
print '<BR>';
/*
-----------------------------------------------------------------------------------------
在这里你可以将字符串 $dogdisc 存储到任何地方如 session,cookie,数据库,php文件
-----------------------------------------------------------------------------------------
*/
//我们在此注销这个类
unset($ourfirstdog);
/* 还原操作 */
/*
-----------------------------------------------------------------------------------------
在这里将字符串 $dogdisc 从你存储的地方读出来如 session,cookie,数据库,php文件
-----------------------------------------------------------------------------------------
*/
//我们在这里用 unserialize() 还原已经序列化的对象
$pet = unserialize($dogdisc); //此时的 $pet 已经是前面的 $ourfirstdog 对象了
//获得年龄和名字属性
$old = $pet->getage();
$name = $pet->getname();
//这个类此时无需实例化可以继续使用,而且属性和值都是保持在序列化之前的状态
print "Our first dog is called $name and is $old days old<br>";
print '<BR>';
?>
转自http://www.cnblogs.com/yeer/archive/2009/03/25/1421161.html
分享到:
相关推荐
【PHP序列化规则详解】 PHP序列化是一种将变量转换为可存储或传输的字符串的方法,主要涉及`serialize()`和`unserialize()`两个函数。自PHP 3.05版本起,这两个函数开始支持对象的序列化和反序列化。然而,PHP手册...
标题提到的"C# 序列化为php序列化格式的类库 for C#"正是针对这样的需求,它提供了一种方法,使得C#开发者能够方便地将对象序列化成PHP可以理解的格式,从而实现C#与PHP之间的数据交换。 C# 是一种强类型、面向对象...
在`demo`文件中,可能包含了一个关于如何使用PHP序列化和反序列化的示例代码。你可以查看这个文件来进一步了解这两个功能的实际应用。 总结来说,PHP的序列化和反序列化是处理和交换数据的关键工具,但同时也需要...
本文将深入探讨PHP序列化与反序列化的概念、方法以及在实际应用中的重要性,并详细介绍与反序列化相关的安全漏洞。 首先,序列化是一个将对象状态转换为可以存储或传输的形式的过程。在PHP中,序列化函数为...
### PHP序列化基础 PHP内置的`serialize()`函数是进行对象序列化的工具。当你调用`serialize()`时,它会返回一个表示对象状态的字符串。例如: ```php class MyClass { public $var1 = "Hello"; private $var2 =...
首先,要理解PHP序列化和反序列化的概念。序列化是PHP中将对象或变量的状态信息转换成可以存储或传输的形式的过程,反序列化则是将这些存储或传输后的信息还原成PHP中可以识别的对象或变量的过程。PHP通过serialize...
64-64.渗透测试-PHP序列化与反序列化.mp4
在PHP中,序列化和反序列化是两个重要的概念,它们用于将数据对象转换为字符串以便存储或传输,以及将字符串还原为原始的数据结构。在本文中,我们将深入探讨这两个概念,以及它们在PHP中的应用。 首先,让我们了解...
PHP序列化/对象注入漏洞是一种安全威胁,它发生在应用程序中,当不安全地处理序列化数据时,攻击者可以操纵序列化的对象以执行恶意代码。本文深入探讨了这种漏洞的原理,以及如何利用它来获取远程shell。 首先,...
这个工具包的核心功能是反序列化PHP序列化的字符串,允许Java程序理解和操作PHP生成的数据结构。在Java中,反序列化是将已保存或传输的序列化对象状态转换回对象的过程,这对于跨平台交互或持久化存储非常有用。 在...
:)它支持什么该序列化程序可以在JSON和PHP对象之间进行转换。 它使用反射,Phpdoc和注释来生成用于转换PHP代码。 支持使用JMS序列化程序组和版本进行序列化,但不支持反序列化。局限性如果您使用自己的侦听器或类似...
在PHP中,序列化和反序列化是两种重要的数据处理技术,用于将变量转换为可存储或传输的格式,然后再恢复为原始数据结构。这两个函数,`serialize()`和`unserialize()`,是PHP内置的,用于在不同场景下处理数据。 `...
android(包括java)序列化一个对象传给php去做处理,或是接到php的序列化的对象在java中做处理的工具jar包以及使用方法. 使用方法: byte[] b = null; b = PHPSerializer.serialize(一个对象);//将一个对象序列化后返回...
PHP序列化操作是PHP编程中一个重要的知识点,主要用于数据存储和传输。在深入了解PHP序列化操作之前,我们需要理解序列化的基本概念,了解其在实际编程中的应用场景和优势。 序列化,顾名思义,是将一个变量的数据...
此外,PHP序列化后的数据仅限于PHP语言内部使用,通常情况下,序列化数据不应跨越不同程序语言环境使用。因为不同的语言环境对数据的序列化格式可能并不兼容,这可能会在跨语言环境下带来问题。 在实际应用中,我们...
标题中的“WEB漏洞-反序列化之PHP&JAVA全解(下)”指的是关于Web应用程序安全领域的一个重要话题,即PHP和JAVA平台上的反序列化漏洞。反序列化漏洞是由于程序在处理序列化数据时没有充分验证输入,从而允许攻击者构造...
相较于传统的PHP序列化方法,`swoole_serialize`优化了内存管理和CPU计算,减少了不必要的内存拷贝,以及提高了序列化和反序列化的速度。这得益于其底层C/C++实现,能够更直接地操作内存,避免了PHP解释器的额外开销...
反序列化是将JSON格式的字符串转换为程序可直接使用的对象的过程,这对于处理网络请求返回的数据至关重要。在本篇文章中,我们将深入探讨JSON反序列化的概念、原因以及在实际开发中的应用。 一、什么是JSON反序列化...