php 序列化 java_PHP--序列化与反序列化详解

PHP--序列化与反序列化详解

博客说明

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

说明

所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。unserialize()函数能够重新把字符串变回php原来的值。 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。

为了能够unserialize()一个对象,这个对象的类必须已经定义过。如果序列化类A的一个对象,将会返回一个跟类A相关,而且包含了对象所有变量值的字符串。 如果要想在另外一个文件中解序列化一个对象,这个对象的类必须在解序列化之前定义,可以通过包含一个定义该类的文件或使用函数spl_autoload_register()来实现。

PHP序列化:serialize

序列化是将变量或对象转换成字符串的过程。

class student{

public $name;

public $age;

public $number;

//_construct:创建对象时初始化

function __construct($name,$age,$number){

$this->name = $name;

$this->age = $age;

$this->number = $number;

}

}

$student = new student("Jack",22,11086);

var_dump(serialize($student));

?>

测试运行

string(76) "O:7:"student":3:{s:4:"name";s:4:"Jack";s:3:"age";i:22;s:6:"number";i:11086;}"

PHP反序列化:unserialize

反序列化是将字符串转换成变量或对象的过程。

class student{

public $name;

public $age;

public $number;

//_construct:创建对象时初始化

function __construct($name,$age,$number){

$this->name = $name;

$this->age = $age;

$this->number = $number;

}

}

$student = 'O:7:"student":3:{s:4:"name";s:4:"Jack";s:3:"age";i:22;s:6:"number";i:11086;}';

var_dump(unserialize($student));

?>

测试运行

object(student)#1 (3) {

["name"]=>

string(4) "Jack"

["age"]=>

int(22)

["number"]=>

int(11086)

}

魔术函数

函数

说明

__construct()

类的构造函数

__destruct()

类的析构函数

__call()

在对象中调用一个不可访问方法时调用

__callStatic()

用静态方式中调用一个不可访问方法时调用

__get()

获得一个类的成员变量时调用

__set()

设置一个类的成员变量时调用

__isset()

当对不可访问属性调用isset()或empty()时调用

__unset()

当对不可访问属性调用unset()时被调用

__sleep()

执行serialize()时,先会调用这个函数

__wakeup()

执行unserialize()时,先会调用这个函数

__toString()

类被当成字符串时的回应方法

__invoke()

调用函数的方式调用一个对象时的回应方法

__set_state()

调用var_export()导出类时,此静态方法会被调用

__clone

当对象复制完成时调用

__autoload()

尝试加载未定义的类

__debugInfo()

打印所需调试信息

为什么突然说到魔术函数呢,因为在序列化和反序列化的时候经常会用到__construct(),__destruct(),__sleep(),__wakeup()

在后面的博客里面有相应的ctf实例

感谢

万能的网络

以及勤劳的自己

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hadoop2.x的变化

HDFS Federation(HDFS联邦) HDFS有两个主要层: Namespace 由目录、文件和块组成;支持所有命名空间对文件和目录的操作。 Block Storage Service 由Block Management和Storage组成。 Block Management 提供dataNode集群成员关系&am…

python enumeration_python枚举防止无效的属性分配

要使枚举类完全“只读”,只需要使用__setattr__hook防止全部的属性分配。因为元类附加到类之后它是创建的,分配正确的枚举值没有问题。就像伊桑的回答一样,我用的是EnumMeta类作为自定义元类的基础:from enum import EnumMeta, Enumclass FrozenEnumMeta(EnumMeta):"Enum …

java wps linux 安装_ubuntu安装Java开发环境

1. 从sun主页JDK for Linux版本。这里的是jdk-6u6--i586.bin.2. 用root用户登录ubuntu,或是在普通用户下用su命令切换用户。切换到所需的安装目录。类型:cd 例如,要在 /usr/java/ 目录中 安装软件,请键入:cd /usr…

[BZOJ 2594] [Wc2006]水管局长数据加强版 【LCT】

题目链接:BZOJ - 2594 题目分析 这道题如果没有删边的操作,那么就是 NOIP2013 货车运输,求两点之间的一条路径,使得边权最大的边的边权尽量小。 那么,这条路径就是最小生成树上这两点之间的路径。 然而现在有了删边操作…

vs升级c++项目遇到的一些问题

1、error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended. 在工程的stdafx.h中,改为如下配置: #ifndef WINVER #define WINVER 0x0501 #endif #ifndef _WIN32_WINNT #def…

python模糊匹配忽略大小写_在python中忽略大小写的简单方法?

如果搜索多个单词,则创建一个集合是有意义的:print(set(brown_sents).intersection(zip(repeat(most_ambiguous_word),word_class_dict[most_ambiguous_word])))输出{(word2, wordclass2), (word2, wordclass3)}要理解它的作用,请将脚本保存到…

IAR7.51提示秘钥无效IAR 以及 CCDebug驱动(包含win7 64bit)

今天IAR不识别我的仿真器,然后我感觉驱动有问题,就把之前的驱动卸载了,但是按照以前的方法按章驱动(选择路径到IAR的某个目录),提示找不到驱动。。。 也不想重新装个IAR了,于是到CSDN上下载了这个驱动程序,…

cannot be resolved or is not a field

我通常的解决办法:1.看看是不是manifest.xml文件有错误,如果有的话,R.java是不会生成的2.一般来说R.layout.aaa.xml,这里的R是自己的包的R.java,不是android系统的R.java,所以如果引入包的时候有import and…

java解析时已到达文件结尾_IO流读取到文件末尾继续读取

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;//正常情况//main()方法中第一个read()和和第二个read();是可以顺利执行完的…

百度地图动态显示查询结构

<script type"text/javascript">// 百度地图API功能function G(id) {return document.getElementById(id);}var map new BMap.Map("l-map");map.centerAndZoom("北京",12); // 初始化地图,设置城市和地图级别。var ac …

solr5.0mysql_ik扩展支持Solr配置详解

扩展ik原生代码&#xff1a;public class IKAnalyzerTokenizerFactory extends TokenizerFactory{private boolean useSmart;public boolean useSmart(){return this.useSmart;}public void setUseSmart(boolean useSmart) {this.useSmart useSmart;}public IKAnalyzerTokeniz…

apache htpasswd.exe创建密码

一、使用apache htpasswd.exe创建密码文件&#xff0c;命令请看PHP推荐教程&#xff1a;apache htpasswd命令用法详解 apache htpasswd命令用法实例 1、如何利用htpasswd命令添加用户&#xff1f; 在apache安装目录bin下找到htpasswd #usr/local/apache/bin/htpasswd -bc .pass…

考研复试考java_2019考研复试经验帖:过来人谈5件“小事”

关于复试&#xff0c;决定这你的命运&#xff0c;考生一定要好好把握。关于复试&#xff0c;你做好前期功课&#xff0c;足够了解了吗?下面新东方在线分享一位过来人的经验之谈&#xff0c;给大家最走心的忠告~~▶先来说说复试规则。在复试之前学校会公布学校的复试分数线&…

Hadoop2源码分析-RPC机制初识

1.概述 上一篇博客&#xff0c;讲述Hadoop V2的序列化机制&#xff0c;这为我们学习Hadoop V2的RPC机制奠定了基础。RPC的内容涵盖的信息有点多&#xff0c;包含Hadoop的序列化机制&#xff0c;RPC&#xff0c;代理&#xff0c;NIO等。若对Hadoop序列化不了解的同学&#xff0c…

svn客户端 java_svn纯java客户端SVNKit学习整理(转)

http://www.iteye.com/topic/688217http://blog.csdn.net/feiren127/article/details/7551782把svnkit.jar添加到项目中&#xff0c;用于实现svn功能。 把jackson-all-1.6.2.jar添加到项目中&#xff0c;用于显示树列表。把javaee.ar添加到项目中。新建一个类(SVNUtil.class)实…

贪心 BestCoder Round #39 1001 Delete

题目传送门 1 /*2 贪心水题&#xff1a;找出出现次数>1的次数和res&#xff0c;如果要减去的比res小&#xff0c;那么总的不同的数字tot不会少&#xff1b;3 否则再在tot里减去多余的即为答案4 用set容器也可以做&#xff0c;思路一样5 */6 #include &l…

java this() super()_java中的this和super

this对象本身。public class ThisTest {ThisTest tTest;public ThisTest(){tTest this;}public void test(){System.out.println(this);}public static void main(String arg[]){new ThisTest().test();}}成员方法引用。成员变量引用。public class ThisTest {String name;Str…

配置汇编环境:使用vs2010+MASM

1、将MASM32下载并安装到根目录&#xff08;得到include和lib文件夹&#xff09;&#xff0c;官网即可下载&#xff0c;有64位版本2、配置vs2010 &#xff08;1&#xff09;添加项目 a、新建空白解决方案 b、添加空项目 c、项目属性->生成自定义-&g…

java 抽象类命名_Java的抽象类和接口

一.抽象类首先看抽象方法&#xff1a;抽象方法只有方法签名&#xff0c;没有方法的实现。并且被abstract修饰。 例如&#xff1a; abstract void test();有抽象方法的类只能被定义为抽象类&#xff0c;抽象类里可以没有抽象方法。抽象类的规则&#xff1a;抽象类必须使用abstr…

JSP、Servlet中get请求和post请求的区别总结

在学习JavaWeb最初的开始阶段&#xff0c;大家都会遇到HttpServlet中的doGet和doPost方法。前两天看《Head First Servlets & JSP》看到其中讲关于Servlet中get请求和post请求的区别&#xff0c;现总结如下&#xff1a; 1&#xff1a;请求数据的大小不同。 因为get请求的数…