MrB*_*rBr 4 html php forms serialization
我无法理解PHP中序列化/反序列化的概念.
假设我有一个非常简单的PHP对象(类someObject),并且在设置该对象的属性之后我想序列化它:
所以我打电话给:serialize($someObject);
我想通过html表单将此序列化对象转移到另一个php skript中,因此我将其设置为隐藏值:
<input type="hidden" name="someObject" value="<? print $someObject; ?>"
Run Code Online (Sandbox Code Playgroud)
在下一个PHP脚本中,我想使用unserialize来获取我的对象并将其传递给数据库.
$unserialize = unserialize($_POST['someObject'])
Run Code Online (Sandbox Code Playgroud)
但这总是返回BOOL(假) - 所以我在这里缺少什么?
谢谢你的帮助!
序列化字符串如下所示:
O:1:"a":1:{s:3:"foo";s:3:"100";}
Run Code Online (Sandbox Code Playgroud)
您必须urlencode/ urldecode序列化字符串以防止序列化表示中的任何字符破坏您的标记.看看你的页面来源.第一个引用可能会结束您的HTML值属性.所以你有类似的东西:
<input ... value="O:1:"a":1:{s:3:"foo";s:3:"100";}">
Run Code Online (Sandbox Code Playgroud)
因此,您的$_POST永远不会包含完整的序列化字符串,但仅限于此O:1:
如果这不是问题,请确保首先从对象获得序列化字符串.另请注意,某些对象在(未)序列化时无法序列化或具有已修改的行为.有关详细信息,请参阅PHP手册中的注释serialize.
如果您不需要在运行PHP的不同服务器上发送对象,请考虑将它们保存在Session中.它更容易,更不容易出错并且更安全,因为在传输过程中对象不能被篡改.
| 归档时间: |
|
| 查看次数: |
2275 次 |
| 最近记录: |