php post 反序列化对象,序列化/反序列化php对象

我无法理解PHP中序列化/反序列化的概念.

假设我有一个非常简单的PHP对象(类someObject),并且在设置该对象的属性之后我想序列化它:

所以我调用:serialize($someObject);

我想通过html表单将此序列化对象转移到另一个php skript中,因此我将其设置为隐藏值:

在下一个PHP脚本中,我想使用unserialize来获取我的对象并将其传输,例如到数据库.

$unserialize = unserialize($_POST['someObject'])

但这总是返回BOOL(假) – 所以我在这里缺少什么?

谢谢你的帮助!

解决方法:

序列化字符串如下所示:

O:1:"a":1:{s:3:"foo";s:3:"100";}

你有序列化字符串的tourlencode / urldecode,以防止序列化表示中的任何字符破坏你的标记.看看你的页面来源.第一个引用可能会结束您的HTML值属性.所以你有类似的东西:

所以你的$_POST永远不会包含完整的序列化字符串,但只包含O:1:

如果这不是问题,请确保首先从对象获得序列化字符串.另请注意,某些对象在(未)序列化时无法序列化或具有已修改的行为.请参考Notes in PHP Manual for serialize for details.

如果您不需要在运行PHP的不同服务器上发送对象,请考虑将它们保存在Session中.它更容易,更不容易出错并且更安全,因为在传输过程中对象不能被篡改.

标签:php,serialization,forms,html

来源: https://codeday.me/bug/20190530/1183870.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值