货币问答:php序列化

岳琴滨

php 什么是序列化

序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。 PHP中的序列化和反序列化分别通过函数serialize()和unserialize()即可实现。serialize()的参数可以是resource类型外的所有变量类型,最常见的是用来序列化对象,unseialize()将serialize的返回结果作为参数,进行反序列化,得到原对象。

推荐
不推荐
展开
收起
郗虑

PHP中序列化有什么用处

你想如果想把一个数组或者是对象存储到文件或数据库中,怎么办。不能像字符串那样的存储吧。所以在存储数组或对象之前先serialize,在取回内容时再unserialize...一句话:serialize的作用是 产生一个可存储的值的表示.unserialize的作用是 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。问题可以去php中文网问答社区提问http://www.php.cn/wenda.html,大神在线帮你解决,希望对你有帮助

推荐
不推荐
展开
收起
郁芳蘅

php序列化入库的可以作为查询条件吗?

序列化的数据你用作查询条件也没法查啊。都是一堆字符串。

两个答案 相反的啊 不过问题已解决 谢谢

推荐
不推荐
展开
收起
直上苍穹

php如何序列化/存储闭包(Closure)

实在需要序列化,可以用反射(Reflection),并直接操作代码文件获得上下文信息:/*** 创建一个反射:*/$reflection = new ReflectionFunction($closure);/*** 参数可以直接得到了:*/$params = $reflection-getParameters();/*** 获得Closure的函数体和use变量,形如:* function($arg1, $arg2, ...) use ($val1, $val2, ...) {* // 要获得这个部分的代码!* }* 办法很多,你可以直接用正则、字符串查找或者Tokenizer,等等等等。* 比如可以先从reflection里得到函数的开始行和结束行:*/$startLine = $reflection-getStartLine();$endLine = $reflection-getEndLine();// 然后用str*这个,str*那个的函数来清理,细节不写了:

推荐
不推荐
展开
收起
深宵煮酒

php序列化的为什么__sleep睡眠后,为什么反序列还是全部打出来了

序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。PHP中的序列化和反序列化分别通过函数serialize()和unserialize()即可实现。serialize()的参数可以是resource类型外的所有变量类型,最常见的是用来序列化对象,unseialize()将serialize的返回结果作为参数,进行反序列化,得到原对象。在PHP中,序列化和反序列化很多地方都可以用到!~例如:数据库连接,序列化数组等等。本回答被网友采纳

推荐
不推荐
展开
收起
季墅

php的序列化可以直接传给c 的语言程序用吗??php不也是c做出来的吗?

你希望怎么传,怎么用?你说的直接传是什么意思?这个跟语言其实没什么关系。序列化之后的串可以是文本的也可以是二进制,你把它传递给另一个程序,那个程序要怎么用才是关键。如果你希望解析这个串,那就要目标程序有解析这个串的功能。具体到php,如果你使用php原生的序列化,那么就是得到一个字符串,这个字符串传给一个C程序很容易,C程序解析这个串也不难,关键是你希望C程序中怎么用这个串?

推荐
不推荐
展开
收起
无发仙

php如何循环反序列化?

1.构造HITCON类反序列化字符串,其中$method='login',$args数组’username’部分可用于构造SQL语句,进行SQL注入,'password’部分任意设置。

2.调用login()函数后,利用username构造联合查询,使查询结果为SoFun类反序列化字符串,设置username构造联合查询,使查询结果为SoFun类反序列化字符串,设置username构造联合查询,使查询结果为SoFun类反序列化字符串,设置file=‘flag.php’,需绕过__wakeup()函数。

3.绕过oadData()函数对反序列化字符串的验证。

4.SoFun类 __destruct()函数调用后,包含flag.php文件,获取flag,需绕过__wakeup()函数

本回答被网友采纳

推荐
不推荐
展开
收起
神圣世家

php unserialize()不能反序列化时怎么做才能不提示错误

加@ 可以禁止提示错误 ,但程序会正常运行如下if(false !== @unserialize($arr)){

那样会不会有潜在的危险呢?
不会的啊,  Notice 错误都可以 忽略掉的。 这只不过是一种提示而已 不会影响程序。你也可以在 公共导入文件最上面里 加上一句error_reporting(E_ALL ^ E_NOTICE);这个就是 屏蔽notice错误 而其他错误是 全开 的意思。大型开源项目里 一般 常见的 代码。

推荐
不推荐
展开
收起
梦季

请写出php变量序列化和反序列化的函数,并举出1个应用例子

<?php$stooges = array('Moe','Larry','Curly');$new = serialize($stooges);print_r($new);echo "<br />";print_r(unserialize($new));?>

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

unserialize() 恢复原先变量

推荐
不推荐
展开
收起
查看更多答案
收起