PHP Unserilize 不起作用

比拉什尔

我正在 mysql 数据库中保存一个序列化的数组。当我从 mysql 获取结果数据并打印详细信息时,它正在打印。

 $data=$row['data'];



print_r( $data)

结果是

a:8:{i:0;a:7:{s:2:"id";s:2:"16";s:4:"slug";s:8:"fieldset";s:4:"name";s:8:"Fieldset";s:4:"type";s:8:"fieldset";s:7:"options";s:0:"";s:9:"parent_id";s:1:"0";s:5:"value";s:0:"";}i:1;a:7:{s:2:"id";s:2:"20";s:4:"slug";s:9:"your-name";s:4:"name";s:9:"Your Name";s:4:"type";s:4:"text";s:7:"options";s:0:"";s:9:"parent_id";s:1:"0";s:5:"value";s:11:"SamueljalIL";}i:2;a:7:{s:2:"id";s:2:"21";s:4:"slug";s:10:"your-email";s:4:"name";s:10:"Your Email";s:4:"type";s:5:"email";s:7:"options";s:0:"";s:9:"parent_id";s:1:"0";s:5:"value";s:16:"[email protected]";}i:3;a:7:{s:2:"id";s:2:"24";s:4:"slug";s:5:"phone";s:4:"name";s:5:"Phone";s:4:"type";s:4:"text";s:7:"options";s:0:"";s:9:"parent_id";s:1:"0";s:5:"value";s:11:"88621295115";}i:4;a:7:{s:2:"id";s:2:"22";s:4:"slug";s:12:"your-message";s:4:"name";s:12:"Your Message";s:4:"type";s:8:"textarea";s:7:"options";s:0:"";s:9:"parent_id";s:1:"0";s:5:"value";s:1876:"Havе yоu listenеd
 http://boletines.consumer.es/?p=50&u=https://gdfgl/96D4u9";}i:5;a:7:{s:2:"id";s:2:"17";s:4:"slug";s:12:"verification";s:4:"name";s:12:"Verification";s:4:"type";s:12:"verification";s:7:"options";s:0:"";s:9:"parent_id";s:1:"0";s:5:"value";s:0:"";}i:6;a:7:{s:2:"id";s:2:"18";s:4:"slug";s:27:"please-enter-any-two-digits";s:4:"name";s:27:"Please enter any two digits";s:4:"type";s:6:"secret";s:7:"options";s:0:"";s:9:"parent_id";s:2:"17";s:5:"value";s:2:"82";}i:7;a:7:{s:2:"id";s:2:"19";s:4:"slug";s:6:"submit";s:4:"name";s:6:"Submit";s:4:"type";s:6:"submit";s:7:"options";s:0:"";s:9:"parent_id";s:2:"17";s:5:"value";s:0:"";}} 

但是当我尝试对这些数据进行反序列化时,它不起作用

 $arr=unserialize($data);

  print_r($arr);

这里没有任何印刷品;

米克马克库萨

您的序列化字符串已损坏。当我擦水晶球时,我可以想象有人手动执行字符串替换(不恰当地)来更新Have you listened索引处紧跟在数组中的 url 4

这是在分析该位置的数据后发现的:

s:1876:"Havе yоu listenеd
http://boletines.consumer.es/?p=50&u=https://gdfgl/96D4u9";

你会看到这个存储的值有 81 个字节/字符。

序列化数据严格要求该值必须包含 1876 个字节/字符。

最终,您的序列化数据已被破坏——无论是长度还是值。

如果你不介意当前值,你可以用这个手动修复序列化的数据:https : //3v4l.org/GqsHu

这是我在这里的一篇文章:https : //stackoverflow.com/a/55074706/2943403

使用提供的代码段,您可以每次都即时修复损坏的序列化数据,或者您可以花时间修复所有损坏的数据并更新数据库,以免再次出现这种麻烦。

让这件事成为开发人员的一个教训——永远不要尝试走捷径来更新序列化数据。您必须对其进行反序列化、修改,然后重新序列化,以便生成有效的字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章