Php序列化格式

时间:2012-08-13 14:48:35

标签: php serialization

我尝试使用Python phpserialize库从PHP读取序列化会话数据。但是,我发现我的PHP设置正在以不同于phpserialize(以及几乎所有其他Web文档)所期望的格式保存会话数据。例如:

$_SESSION["userid"] = 42;
echo session_encode();

打印出来

userid|i:42;

而phpserialize将其序列化为:

phpserialize.serialize({'userid':42})
'a:1:{s:6:"userid";i:42;}'

我通过phpinfo()检查了session.serialize_handler,并将其设置为' php' (其他选项是php_binary和wddx)。我不能在python中使用任何标准的php序列化库作为结果。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

如果你想将这个从PHP传递给Python,你应该在serialize数组上调用$_SESSION

示例:

echo serialize($_SESSION);

然后,PHP序列化库将解释结果。

session_encodeserialize不同。

答案 1 :(得分:1)

在PHP上序列化变量,在Python中序列化数组。

此代码:

$data = array('userid' => 42);
echo json_encode($data);

会显示与phpserialize相同的结果。

但是最好使用json_encode / json_decode在php应用程序之间传输数据。 python应用程序。