php 使用反序列化函数 serialize 是返回 false 的一个可能原因

长度问题:php函数unserialize数据返回false问题分析 unserialize的这个问题是由一个emlog论坛用户在使用时报错而发现的问题表现情况如下:emlog缓存的保存方式是将php的数据对象(数组)序列化(serialize)后以文件的形式存放,读取缓存的时候直接反序列化(unserialize)缓存字符串即可读取数据,关于序列化和反序列化的原理请看我先前的文章《php函数serialize()与unserialize()不完全研究》 阅读详情

       今晚在使用反序列化函数是一直返回 false,不知所以,还以为是 '<' 标签的缘故,结果一百度,说可能是长度没对上,结果我一数,果然是,更正后,测试反序列化函数就返回成功的结果了。下面记录一下:

例子:

a:6:{a:1:{s:4:"file";s:78:"导入模板,<a target="_blank" href="/edu/excel/export_user.xls">点击下载</a>";}}

原来字母 s 后面紧跟的数字是后面内容的长度,且必须计算准确,不然就会出现上述问题,这里主要错在 s:78这个,

我数完字符数是 58(不包括中文字符),接着你自己主要你数据库或文件使用的编码是 utf-8 还是其他,再来计算中文

所占的字节数,我这里是 utf-8 ,所以按一个中文字符占 3 个字节计算,8个中文字符*3byte=24byte

则一共长度为 s = 58+24 = 82.修正如下:

a:6:{a:1:{s:4:"file";s:82:"导入模板,<a target="_blank" href="/edu/excel/export_user.xls">点击下载</a>";}}

字符在不同编码下所占字节数如下:(以下内容原文链接:link)

英文字母和中文汉字在不同字符集编码下的字节数
英文字母:
字节数 : 1;编码:GB2312

字节数 : 1;编码:GBK

字节数 : 1;编码:GB18030

字节数 : 1;编码:ISO-8859-1

字节数 : 1;编码:UTF-8

字节数 : 4;编码:UTF-16

字节数 : 2;编码:UTF-16BE

字节数 : 2;编码:UTF-16LE


中文汉字:
字节数 : 2;编码:GB2312

字节数 : 2;编码:GBK

字节数 : 2;编码:GB18030

字节数 : 1;编码:ISO-8859-1

字节数 : 3;编码:UTF-8

字节数 : 4;编码:UTF-16

字节数 : 2;编码:UTF-16BE

字节数 : 2;编码:UTF-16LE

~晚安~

混合动作空间在强化学习中的创新应用:PDQN与MPDQN算法解析 本文深入解析了强化学习中处理混合动作空间的PDQN与MPDQN算法。针对既有离散选择又有连续调节的复杂决策场景,PDQN通过参数化深度Q网络,巧妙结合DQN与DDPG进行交替优化;MPDQN则进一步改进,为每个离散动作提供专属参数评估以减少干扰。文章通过游戏、自动驾驶等实例阐述了其应用价值与面临的挑战。 阅读详情

相关推荐

Android应用开发从零到一:基于Kotlin与Jetpack Compose的完整实践指南

移动应用开发的核心在于构建一个架构清晰、可维护且可扩展的应用基础。理解应用架构的原理,如关注点分离和数据驱动UI,是实现高质量应用的关键技术价值。在现代Android开发中,Kotlin语言凭借其空安全特性和协程,能有效提升代码的健壮性与开发效率。Jetpack Compose作为声明式UI框架,代表了UI开发的未来方向,与Kotlin协程深度集成,简化了复杂交互界面的构建。这些技术共同服务于个人任务管理、企业工具等多种应用场景。本文以构建一个完整的个人任务管理应用为例,系统阐述从环境搭建、UI构建、数据持

weixin_32667955的博客 313

Springboot注解@JSONField(serialize = false)无效

1、注解的作用 @JSONField(serialize = false) 注解,便可以在返回响应参数体的时候去除某个字段 比如: // 返回时去掉密码字段 @JSONField(serialize = false) private String password; 2、SpringBoot中发生的问题 在视图中查看当前获取的json串,发现加上@JSONField(serialize = false)注解的字段也被序列化出来了 3、分析原因 Sprintboot默...

qq_307183846的博客 4527

使用Docker搭建SearXNG搜索引擎

【代码】使用Docker搭建SearXNG搜索引擎。

janthinasnail的博客 1166

Strus2 @JSON(serialize=false),过滤不需要的变量

在用struts2 的Action 加@ParentPackage("json-default")注解 or struts.xml 配置文件中 Action所在的package 继承 json-default,Action中方法返回json类型的数据时,在没有任何设定的情况下,改类下的所有getter方法的返回值将被包含在返回给客户端的JSON字符串中。需要剔除不需要包含的属性,在类结构结构中需要

sageparadise的专栏 7862

别再手动上传了!用宝塔面板的‘Let‘s Encrypt’免费SSL证书,3分钟自动续期

本文详细介绍了如何利用宝塔面板的‘Let‘s Encrypt’功能实现SSL证书的自动申请和续期,3分钟完成配置即可永久免费使用。通过对比不同SSL证书方案,突出Let's Encrypt的免费、自动续期和高安全性优势,特别适合个人博客和中小企业官网。

weixin_30415113的博客 150

避开集成插件!手把手教你用URL登录实现Finereport与致远OA的无缝跳转

本文详细介绍了如何通过URL登录机制实现Finereport与致远OA的无缝跳转,无需复杂插件配置。文章涵盖用户体系同步、环境配置、URL登录核心设置及安全加固方案,特别适合企业数字化转型中BI工具与OA系统的轻量化集成需求。

weixin_29215815的博客 75

@JSONField使用

1.serialize=false,不序列化 效果:实体设置了该字段的值,但是转化为json数据的时候不会序列化,即不会将该字段返回到json数据中 图:

cf 1806

企业微信消息推送API实战:5步搞定可信IP与域名配置(含Python代码示例)

本文详细解析了企业微信消息推送API实战中的关键配置步骤,特别是可信IP与可信域名的配置流程。通过5个清晰步骤,结合Python代码示例,指导开发者快速完成安全通信链路搭建,避免常见错误,确保消息推送服务稳定可靠。

qsc9012345的博客 996

@JsonIgnore、@JSONField(serialize = false)不起作用

一、@JsonIgnore不起作用原因 参考:实体类中@JsonIgnore注解不起作用 - 百度文库 1.@JsonIgnore作⽤:在json序列化时将pojo中的⼀些属性忽略掉,标记在属性或者⽅法上,返回的json数据即不包含该属性。 2.@JsonIgnore不起作⽤的原因(可对照参考): ①注意导包:com.fasterxml.jackson.annotation.JsonIgnore ②注意属性的命名规范,需要使⽤驼峰规则。 本人遇到的失效错误代码: @JsonIgnore @Tabl

rakunjo的博客 1万+

第一章 EB安装

1.DemoWorkspace 是基于EB当前组件配置下的例程,包含了启动文件和中断服务函数以及组件demo。2.Mclsar 下存放的是EB的插件包和静态MCAL的驱动文件。

舊梦的博客 1961

银河麒麟编译libjpeg库并配置qt环境

银河麒麟下编译libjpeg库并配置qt环境验证

小米的修行之路 1012

Springboot使用Fastjson的注解@JSONField(serialize = false)不起作用

1.发现问题 ​ 在Springboot项目Controller层中把实体类放入到ModelMap并通过@ResponseBody注解进行转json串返回给视图时,发现即使get方法或者字段加上@JSONField(serialize = false)还是会被序列化,返回给前端。 2.原因分析 SpringBoot默认内置的是Jackson。而@JSONField(serialize = false)是FastJson的注解,所以Springboot在默认情况进行转JSON的时候并不会扫描这个注解。 3

weixin_43660476的博客 5429

11年电赛综合测评——单运放三角波发生器

目录 背景知识科普: 原理:局部负反馈+大环负反馈+积分器 仿真图如下: 背景知识科普: 反馈电路是将放大器输出信号(电压或电流)的一部分或全部,回收到放大器输入端与输入信号进行比较(相加或相减),并用比较所得的有效输入信号去控制输出,这就是放大器的反馈过程。 一、反馈放大器反馈极性的经验分析法—符号法 分析步骤1.在输入端上加上一个“+”或“-”的输入信号,按瞬时极性法标出反馈放大器中各个电极(基极b,集电极c,发射极e)电压的瞬时性。 2.判断经放大和反馈后得到的反馈信号Xf的瞬时极性

沉迷单车的追风少年 9905

PHP序列化反序列化serialize和unserialize函数

昨天网上看到一道面试题,如下: “类的属性可以序列化后保存到session中,从而以后可以恢复整个类,这要用到的函数是?” 我记得原来老师说过序列化函数是"serialize",查了下,果不其然,今天记录下,免得忘记。 <?php class aa{ public $a = 1; private $b = 2; protected $c

lightWay的博客 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

PHP反序列化unserialize 出现bool false 解决办法

php 提供serialize(序列化) 与unserialize(反序列化)方法。 使用serialize序列化后,再使用unserialize反序列化就可以获取原来的数据。 &lt;?php $arr = array( 'name' =&gt; 'fdipzone', 'gender' =&gt; 'male' ); $str = s...

漫漫程序人生路 676

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

php unserialize bool(false),直击php中unserialize返回false的解决方法_后端开发

本文实例报告了php中unserialize返回false的解决要领,分享给人人供人人参考。具体要领以下:php 供应serialize(序列化) 与unserialize(反序列化)要领。运用serialize序列化后,再运用unserialize反序列化就可以够猎取本来的数据。先来看看以下程序实例:$arr = array('name' => 'fdipzone','gender' =...

weixin_42297349的博客 248

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

php unserialize bool(false),php unserialize 返回false的解决方法

php 提供serialize(序列化) 与unserialize(反序列化)方法。使用serialize序列化后,再使用unserialize反序列化就可以获取原来的数据。(改表结构或者进行下面操作)$arr=array(‘name‘=>‘fdipzone‘,‘gender‘=>‘male‘);$str=serialize($arr);//序列化echo‘seri...

weixin_35796591的博客 157

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

本节内容:php函数serialize()与unserialize()用法php函数serialize():这个函数作用就是序列化数据,返回一个可存储的字符串,该函数有利于存储或传递PHP的值,同时不丢失其类型和结构。在cms数据库中经常看到这样的结构。一般将复杂或者数据量多而没有必要分开存储的数据封装成一个多维数组通过serialize()转成字符串,然后存进数据库,需要时再拿出来转成数组再用,...

weixin_39562234的博客 591

php 序列化与反序列化

简介 在php中,序列化用与存储或传递php的值的过程,同时不丢失其结构和数据类型。 相关的函数包括serialize、unserialize,魔术方法包括__sleep、__wakeup。 序列化 语法:string serialize ( mixed $value ) 可以对String、Integer、Boolean、Null、Array、Object进行操作 反序列化 语法:mi...

天空之城 7828

php mysql 序列化_PHP serialize()与unserialize():序列化与反序列化

我们在开发的过程中有时会遇到需要把对象或者数组进行序列化存储,反序列化输出的情况。特别是当需要把数组存储到 MySQL 数据库中时,就需要将数组进行序列化操作。所谓序列化,就是将一个在内存中的变量转换为可保存或传输的字符串的过程。而反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来可以轻松的完成数据的存储和传输操作,使得程序更具维护性。1、序列化所有 PHP 里面的值都...

weixin_35202013的博客 367

PHP序列化与反序列化

  PHP提供serialize和unserialize函数将任意类型的数据转换成string类型或者从string类型还原成任意类型。当unserialize函数的参数被用户控制的时候,就会形成反序列化漏洞。如著名的CVE-2016-7124漏洞,执行unserialize函数时,当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行。 序列化   在PHP中,序列化用于存储或传递PHP的值的过程,同时不丢失其类型和结构。序列化函数serialize原型如下 string s

慎铭的博客 4226

长亭php反序列化防护_php反序列化

在php序列化格式(即数据在传输时防止格式类型丢失,先进行打包即序列化,完成传输后解包即反序列化)序列化函数原型:string serialize ( mixed $value )class CC {public $data;private $pass;public function __construct($data, $pass){$this->data = $data;$this-&g...

weixin_39535217的博客 121

php反序列化漏洞

PHP反序列化 序列化 为什么要进行序列化 当对一个变量赋值后,在本次程序运行完成后,变量会从内存中清除掉。而序列化的目的时把变量保存在硬盘中,用到时可方便的通过反序列化把之前序列化的内容变回可用变量。即序列化用于在存储或传递PHP的值的过程中,同时不丢失其类型和结构。利于对象的保存和传输。 两个函数 序列化 反序列化 对象转换为字符串 特定格式的字符串转换为对象 函数:serialize() 函数:unseriasize() serialize(): 当在php中创建了一个对象后

twowords的博客 457

php函数 序列化serialize() 与 反序列化unserialize()

手册的描述: serialize (PHP 4, PHP 5, PHP 7) serialize — 产生一个可存储的值的表示 描述  string serialize ( mixed $value ) serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。 这有利于存储或传递 PHP 的值,同时不丢失其类型

houzhyan-博客 1506

Php中unserialize()函数返回的是bool(false)

这种情况发生的原因有多种可能,最大的可能就是在序列化数据的时候的编码和反序列化时的编码不一样导致字符串的长度出现偏差。例如数据库编码latin1和UTF-8字符长度是不一样的。 解决方案: 自己从网上找的小函数来纠正序列化字符串中字符串长度的问题 Utf-8 function mb_unserialize($serial_str) {      $serial_str= preg_rep

2298

PHP serialize()与unserialize()

在php开发中,我们有时候需要存储复杂或者数据量多而没有必要分开的数组数据,这个时候我们就需要使用到PHP serialize()将数组数据转成字符串,然后存进数据库。需要的时候再拿出来转成数组再用,而拿出了转成数组就需要使用php的unserialize()函数。本文章向大家介绍PHP serialize()与unserialize()使用实例,具体类容请看正文。

wuxiaopengnihao1的博客 595
上一篇: windows 环境下装 composer
下一篇: Centos7 下 编译安装 LNMP
yibin94
博客等级 码龄11年 78粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值