php 序列化格式


Php Serialization Format

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

$_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 序列化库。有什么建议吗?

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

例:

echo serialize($_SESSION);

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

session_encodeserialize不同。

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

此代码:

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

将显示与phpserialize相同的结果。

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