`
flex_莫冲
  • 浏览: 1095744 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

unserialize返回false的原因解析

    博客分类:
  • php
 
阅读更多
今天define了一个序列化的数组,使用时需要unserialize回来使用。但是返回的是false。
首先上网查了下,可能是由于define的php文件是anci编码,而unserialize文件是utf-8编码。
于是我将define文件编码更改成utf-8后保存。但是保存后每次重新打开后又变成anci编码。

怎么办呢?于是,我写了行中文的注释在define的php文件中。再保存就能保存成utf-8编码了。后来证实,这个步骤其实无关紧要。因为用vim打开该文件显示的是utf-8编码。这不是问题所在。

然后,清除runtime,重新unserialize,显示出了define的数组内容。再次刷新页面,又是返回false。这下傻眼了。再次清除runtime,显示正确,再次执行,显示false。

于是,我将两次获取到的define的serialize的数组字符串取出来对比。发现第一次正确的字符串内容与define的内容一致,而第二次取到的字符串,加上了\"转义。
问题就出在这里了。

可能是php.ini中magic_quotes_gpc项设置为on导致的。但是为什么清除runtime第一次执行就不会转义呢?

好吧。知道了问题原因。修改就很容易了。

$code = stripslashes(ERROR_CODE);
$err = unserialize($code);


参考资料 :http://nmyun.blog.51cto.com/448726/137981
分享到:
评论

相关推荐

    php中unserialize返回false的解决方法

    本文实例讲述了php中unserialize返回false的解决方法,分享给大家供大家参考。具体方法如下: php 提供serialize(序列化) 与unserialize(反序列化)方法。 使用serialize序列化后,再使用unserialize反序列化就可以...

    unserialize.php

    unserialize.php

    PHP7 新特性:unserialize、 IntlChar、CSPRNG.md

    == false && in_array(get_class($obj), $allowedClasses)) { // 进一步验证对象的属性是否符合预期 return $obj; } else { throw new Exception('Unsafe or invalid serialized data'); } } try { $safeObj ...

    详解php中serialize()和unserialize()函数

    - 当 `unserialize()` 遇到无法识别的格式或无效的序列化字符串时,它会返回 `false`,并可能生成一个错误。因此,在使用 `unserialize()` 前,最好先检查字符串是否有效。 - 序列化后的字符串可能包含恶意代码,...

    浅谈php函数serialize()与unserialize()的使用方法

    unserialize()则用于将字符串形式的状态信息转换回原始的数组或对象。这种机制对于需要临时保存变量状态,然后重新加载它们的场景非常有用,例如,在会话管理或者数据持久化操作中。 序列化的数据通常包含了变量...

    信息安全_数据安全_9_ZN2018_WV_-_PHP_unserialize.pdf

    `unserialize`不安全的主要原因是它可以触发魔术方法(magic methods),如`__wakeup()`、`__destruct()`和`__toString()`。这些方法在对象被反序列化后会被自动调用,如果恶意用户可以控制输入的数据,他们可能利用...

    unserialize:jQuery 反序列化插件

    返回一个 JSON 对象,其值在字符串中说明。 如何使用: 这个插件有两个用例。 第一个用例: 起初,它与“serialize()”完全相反。 假设我们有一个 ID 为“testform”的表单,它有两个文本输入,名为“testvar1...

    PHP中json_encode、json_decode与serialize、unserialize的性能测试分析

    另一方面,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于文本,易于人阅读和编写,同时也易于机器解析和生成。JSON格式已在Web开发中广泛使用,并逐渐成为网络数据交换的标准格式。在PHP中...

    浅谈php serialize()与unserialize()的用法

    4. **缓存机制**:在缓存系统中,如Memcached或Redis,数据通常会被序列化后再存储,以便快速读取和解析。 需要注意的是,`serialize()` 和 `unserialize()` 不处理资源类型(resource),因为资源通常是与PHP运行...

    php函数serialize()与unserialize()用法实例

    主要介绍了php函数serialize()与unserialize()用法,以实例形式详细讲述了php函数serialize()与unserialize()的适用情况与使用方法,具有很好的参考借鉴价值,需要的朋友可以参考下

    unserialize:PHP 反序列化的 Node.js 端口

    var unserialize = require('unserialize'); console.log(unserialize('a:2:{s:4:"name";s:4:"Andy";s:3:"age";i:82;}')); // { name: 'Andy', age: 82 } 测验 npm test 作者 Andreas Brekken 执照 国际学习中心

    weblogic_unserialize_exploit:Java反序列化vul以进行weblogic利用

    weblogic unserialize exploitjava反序列化漏洞(CVE-2015-4852)的weblogic exploit命令回显exp1.依赖组件python 2.7java2. 程序说明exploit方法来源于Freebuf的”Java反序列化漏洞之weblogic本地利用实现篇”,...

    golang实现php里的serialize()和unserialize()序列和反序列方法详解

    Golang 实现 PHP里的 serialize() 、 unserialize() 安装 go get -u github.com/techleeone/gophp/serialize 用法 package main import ( fmt github.com/techleeone/gophp/serialize ) func main() { str := `...

    2020第十三届全国大学生信息安全竞赛大部分题目

    除了pwn类题和web的easy_unserialize全都有

    PHP bt种子解释和编码

    例如,使用`file_get_contents()`读取整个文件内容,然后通过`json_decode()`或`unserialize()`(如果种子文件是序列化数据)将其转换为PHP数组。从这个数组中,你可以提取出announce URL、info section和其他信息。...

    php序列化函数serialize() 和 unserialize() 与原生函数对比

    - 自PHP 5.2起,引入了对JSON(JavaScript Object Notation)的支持,JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。`json_encode()` 可以将PHP变量转换为JSON格式的字符串,如...

Global site tag (gtag.js) - Google Analytics